程序员从来不缺少对新事物的好奇心和动手探索未知世界的勇气。
从听说树莓派到因好奇购买Model B已经有两年多,最近重新找出来是想实现一台简易的电火花机(电极控制模块),做电火花机是为了给高速钢打孔。
电火花机长什么样在网上可以找得到,就是取断丝锥用的型号;
电极控制模块设计思路大致如下:
初始时步进电机顺时针转动,电极逐渐靠近工件,达到临界值后开始放电产生电火花;此时工件和电极之间电流很小;
当电极和工件之间距离为零时,发生短路,此时电流会达到一个设定的极限值,传感器检测到之后将信号反馈给树莓派,然后控制步进电机逆时针转动,电极远离工件。
当电流小于某一临界值后,步进电机正转,如此往复......
步进电机和驱动版从网上购买,进电机控制代码如下,用C++编写,前期为了测试,加入了按键控制电机转动方向的逻辑。
#include "wiringPi.h" #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <sys/time.h> #include <time.h> #define CLOCKWISE 1 #define COUNTER_CLOCKWISE 2 int flag = 1; int btn_direction = 1; int direction = 1; int pin[] = {26, 27, 28, 29}; void rotate(int* pins, int direction); void btnInterrupt(); int start_timer(); int main() { if(wiringPiSetup() != -1) //初始化wiringPi库 { for(int pi = 0;pi < 4; pi++){ pinMode(pin[pi], OUTPUT); } printf("test interrput\n"); //打印提示信息 pinMode(btn_direction, INPUT); //引脚0为输入模式 pullUpDnControl(btn_direction, PUD_UP); //设置0号引脚上拉 }else{ printf("can't init wiringPi\n"); //初始化失败时,打印出提示信息,并且推出 return -1; } //注册中断程序 if(wiringPiISR(btn_direction, INT_EDGE_FALLING, &btnInterrupt) < 0) //设置引脚下降沿触发 { printf("unable ISR\n"); } start_timer(); while(1){ if(direction == 1){ rotate(pin, CLOCKWISE); }else{ rotate(pin, COUNTER_CLOCKWISE); } } return 0; } //按键服务函数 void btnInterrupt() { flag = 0; } void rotate(int* pins, int direction) { for (int i = 0; i < 4; i++) { if (CLOCKWISE == direction) { for (int j = 0; j < 4; j++) { if (j == i) { digitalWrite(pins[3 - j], 1); // output a high level } else { digitalWrite(pins[3 - j], 0); // output a low level } } } else if (COUNTER_CLOCKWISE == direction) { for (int j = 0; j < 4; j++) { if (j == i) { digitalWrite(pins[j], 1); // output a high level } else { digitalWrite(pins[j], 0); // output a low level } } } delay(2); } } void signalHandler(int signo) { switch (signo){ case SIGALRM: int kk = digitalRead(btn_direction); if(kk == 1 && flag == 0){ if(direction == 1){//值被修改并且按键已经抬起 direction = 2; }else{ direction = 1; } flag = 1; } printf("%d\n", kk); break; } } //定时轮训变量状态,以确认步进电机方向 int start_timer() { signal(SIGALRM, signalHandler); struct itimerval new_value, old_value; new_value.it_value.tv_sec = 0; new_value.it_value.tv_usec = 1; new_value.it_interval.tv_sec = 0; new_value.it_interval.tv_usec = 100000; setitimer(ITIMER_REAL, &new_value, &old_value); return 0; }
以上有一部分是为了测试时,物理按键消除抖动的,实际打孔时信号由电流传感器产生,不存在抖动问题。
相关推荐
用树莓派控制步进电机,做一个简单的门禁系统
在本文中,我们将深入探讨如何使用C语言在树莓派上驱动28BYJ-48-5V步进电机。树莓派是一款基于Linux系统的微型计算机,它具有丰富的GPIO(通用输入/输出)引脚,可以用于控制硬件设备,如步进电机。28BYJ-48-5V步进...
树莓派接收到指令后,通过GPIO口和PWM控制步进电机动作。 六、总结 通过以上步骤,我们可以实现树莓派对步进电机的精确控制,并通过Matlab GUI进行友好的人机交互。这一系统不仅适用于实验室研究,也适合于各种自动...
【树莓派多线程】ADXL345步进电机用树莓派测步进电机加速度代码 树莓派是一种基于Linux系统的微型计算机,因其小巧便携、功能强大而受到众多DIY爱好者和工程师的喜爱。在本项目中,我们将利用树莓派的计算能力,...
标题 "树莓派驱动步进电机28BYJ-48-5V(Python语言版)" 指向了...总的来说,通过树莓派和Python,我们可以轻松实现对28BYJ-48-5V步进电机的精确控制,从而在各种DIY项目中发挥其作用,比如自动门、机器人、3D打印机等。
6. **实际应用**:在机器人、3D打印机、自动化设备等领域,树莓派结合步进电机和多线程插值控制法可以实现复杂的运动控制,如精确的直线和圆弧运动,以及连续的轨迹跟踪。 7. **学习与实践**:理解并实现这样的系统...
秉承高内聚低耦合的指导思想,编写的motor_run()函数,可以指定步进电机的速度和角度。速度可正可负,角度为角度制。
在本项目中,我们主要探讨如何使用MATLAB生成Python代码,并通过树莓派来控制步进电机实现自动化程序。树莓派是一种小巧且成本低廉的单板计算机,常用于DIY电子项目和自动化控制。步进电机则是一种精确控制角度运动...
在这个实验中,我们将主要探讨如何利用树莓派的GPIO(General Purpose Input/Output)引脚和Python编程来控制步进电机。 描述中提到“基于python3,算法很精巧,不用构造矩阵”,这暗示了实验采用了Python 3作为...
在本文中,我们将深入探讨如何使用树莓派进行多线程操作,结合ADXL345加速度传感器和步进电机实现动态的步进电机控制。这个项目的关键知识点包括树莓派的基础编程、多线程技术、ADXL345加速度传感器的使用以及步进...
在树莓派上使用python控制步进电机实现S型加减速,能够有效减小误差,注释详细 实现原理: 假设给定条件:加速段的末速度,初速度,加速时间,以此来计算控制步进电机的每一步速度。 加速段由加加速段(IncAccel)和减...
基于树莓派的28BYJ-48步进电机的驱动代码。实现旋转一圈,可自行增加功能,实现对其控制旋转角度,循环,正反转等控制。有需要的朋友可以下载,有任何问题也可以联系我,一起交流。利用树莓派引脚控制步进电机。
在本文中,我们将深入探讨如何使用树莓派(Raspberry Pi)来控制步进电机,特别是在结合A4988电机驱动器的情况下。步进电机是一种精确定位的电动机,适用于需要精确定位和速度控制的项目。树莓派,作为一个小巧而...
树莓派全能机器人扩展板:步进电机使用教程 本篇文章将详细介绍树莓派全能机器人扩展板的使用教程,重点介绍步进电机的使用方法。 一、树莓派全能机器人扩展板简介 树莓派全能机器人扩展板是市面上唯一一款全功能...
综上所述,通过JAVA编程和Pi4J库,我们可以实现对28BYJ-48步进电机的精确控制,利用树莓派的GPIO接口和UNL2003驱动芯片。这个过程涉及到硬件连接、GPIO库的使用以及步进电机的步进序列理解,为初学者提供了一个很好...
1. 驱动器:步进电机驱动器是连接电机和控制器的桥梁,它接收来自控制器的信号并转换为适合电机的电流和电压。 2. 传感器:编码器可以实时反馈电机的位置和速度,用于闭环控制,提高系统精度。 3. 控制算法:PID...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的...基于stm32控制的步进电机机械臂物流搬运小车(设计资料)(双pid控制环+陀螺仪+树莓派视觉).zip
在本项目中,STM32作为核心处理器,负责整个系统的控制逻辑,包括对步进电机的驱动、陀螺仪数据的读取和处理,以及与树莓派之间的通信。 2. **步进电机控制**:步进电机是一种能够将电脉冲转换为精确角度位移的电动...
在树莓派这样的单板计算机上使用DRV8825,可以实现精确且高效的步进电机运动控制,适用于各种自动化设备和机器人项目。 标签中的"DRV8825树莓派"、"drv8825"和"树莓派"强调了主题的核心元素。这些标签暗示了我们将...
基于stm32控制的步进电机机械臂物流搬运小车,双pid控制环+陀螺仪+树莓派视觉,内含完整源代码 物流智能小车具有搬运、码垛、存储、拣选等多种功能,而且还能在复杂的环境中操作。智能小车的搬运能力强,可以承载...