剛剛注冊的論壇,純純的萌新。
習慣性的瀏覽論壇版塊中的精華帖子,看看到很多前輩大佬的作品。其中自己也做過一些差不多的項目,后悔當初沒來論壇學習下,走過不少彎路啊。
剛剛瀏覽到本版塊的時候看到
基于STM32的簡易激光雕刻機這個帖子。就像順路我也發一個吧
首先這個激光雕刻機是沒有實物了的,這是我大一的時候參加校內競賽做的。當然這種東西的水平是拿不到什么獎的啦。后來同學拿去玩把激光頭給燒了就直接把他分尸了。
幸虧我有保存些資料的習慣,不然真的尸骨無存了。
忘記當初為什么要做這個東西了,可能是為了后來的CNC雕刻機做的初代版本練手,具體原因我記不清了。
一共貌似用了一周左右的時間,使用的是STC89C52RC單片機,也是當時我唯一會的啦。XY軸電機使用拆機光驅,光驅來自實驗室古董臺式機,當時還拆了軟驅的 很多人都沒見過軟驅了現在。
激光頭是后來才郵過來的,12V 500mW應該,反正很小。前面幾天測試使用的油筆芯畫圖的。
機架用的是文具店的A4板夾就是這個樣子的
TIM截圖20180120221255.png (581.68 KB, 下載次數: 138)
下載附件
8
2018-1-20 22:14 上傳
我們記得是買了好幾個,用壁紙刀劃開,用膠槍拼成的機架
由于當時單片機水平垃圾,所以下位機沒有處理過多的程序。大部分的處理是通過上位機進行的。
上位機用的是易語言,話說這個也是第一次,當時找破jie就找了一天多。
還好是中文編程上手快。
上位機支持拖拽,可以轉換灰度圖。其他記不清了。
因為使用易語言寫的因此很可能或者說肯定360等安全軟件會報毒,但是放心吧各位,當初我那個水平是沒有能力的。源碼也會上傳大家自己修改編譯就好
當初也百度搜索下載了很多大神的文件上位機等,也一并上傳了。
等下。。。我看看還有啥
啊哈哈 這個后來去參加過博創杯,但是呢~并沒有完成參賽手續,學校的某些領導公務過于繁忙而忘記了給組委會交付一些文件
但是當初為博創杯準備的視頻還有。不過上傳視頻還得等待審核,只好等等啦
剛剛去重溫了下我佳哥的視頻,濃郁的非主流風格哈哈哈
由于時間倉促,后來沒有參加上比賽有些心灰意冷,這期間同學就給拆了。所以就沒有了后續版本。運動軌跡優化啥的都沒有做,現在是單純一行行的打點。諸位誰有空可以接著做
開發手冊 一、系統運行環境 上位機軟件支持x86、x64構架的Windows操作系統(98以上) 上位機軟件屬于小型軟件不要求系統配置,windows運行環境即可運行。 下位機自帶220v變壓電源,支持210~240v交流電源 二、系統配置 將激光雕刻機通電、放置于水平穩定的平臺上,環境要求通風。 打開上位機軟件,將激光雕刻機自帶的USB線連接,點擊上位機刷新按鈕,軟件會自動檢測使用的串口。(串口通訊需要計算機安裝CH340USB轉串口驅動,具體方法自行尋找) 選擇打開的串口,點擊打開按鍵。點擊激光控制按鍵檢測連接是否正常。 將需要打印的材料放置于激光頭下部,可以通過軟件設置中控制按鍵微調激光頭位置、激光軸移動速度等。 選擇文字模式或圖片模式,也可以通過快捷鍵ctrl+M快速切換。 圖片模式支持BMP等大多數圖片格式,用戶可以通過常規文件打開方式或快捷拖動到編輯區來添加圖片。 文字模式下、用戶可以在編輯區中編輯、排版需要打印的內容。 三、說明 更多功能說明請查看上位機軟件說明部分。 /*z地址定義 50 x+前進 51 x- 52 y+ 53 y- 54/55 字寬 56 前進步 57 激光開關 58/59 激光強度 60 x軸速度 61 y軸速度 62 開始打印0,57 63 暫停 64 停止標志 65 bmp灰度圖標志位 100開始時灰度圖數據 */
單片機下位機源程序如下:
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define N z[60] //X速度
- #define M z[61] //Y速度
- //#define zil 54]*256+z[55]
- unsigned char code Z1[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; // 正轉
- //unsigned char code F1[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉
- sbit jg=P2^0;
- sbit EN1=P2^7;
- sbit EN2=P2^6;
- sbit EN3=P2^5;
- sbit EN4=P2^4;
- sbit led=P2^1;//指示燈
- uchar xdata z[500]={0};//緩存
- uchar buff[3];//串口緩存
- uchar x1,x0,y1,y0,cont2=0;
- uchar xfb=4,yfb=4;//走步標志位
- uchar x,y,k,temp,t;//變量定義,有些沒有用
- char i,j;
- uint h=0,jiguang;
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
- for(j=110;j>0;j--);
- }
- /**********************************************************************
- * *
- * 步進電機驅動 *
- * *
- ***********************************************************************/
- /********x方向正轉***********/
- void motor_fxw(uint flag)
- {
- while(1)
- {
- P0=Z1[i];
- delayms(N);
- flag--;
- i++;
- if(i>7)
- i=0;
- if(flag==0)
- break;
- }
- }
- /********x方向逆轉***********/
- void motor_fxz(uint flag)
- {
- while(1)
- {
- P0=Z1[i];
- delayms(N);
- flag--;
- i--;
- if(i<0)
- i=7;
- if(flag==0)
- break;
- }
- }
- /********y方向正轉***********/
- void motor_fyw(uint flag)
- {
- while(1)
- {
- P1=Z1[j];
- delayms(M);
- flag--;
- j++;
- if(j>7)
- j=0;
- if(flag==0)
- break;
- }
- }
- /********y方向逆轉***********/
- void motor_fyz(uint flag)
- {
- while(1)
- {
- P1=Z1[j];
- delayms(M);
- flag--;
- j--;
- if(j<0)
- j=7;
- if(flag==0)
- break;
- }
- }
- /*****************打點完畢激光移至原點****************************/
- void huanyuan(uint zix,uint ziy)
- {
- while(1)
- motor_fxz(zix);
- while(1)
- motor_fyz(ziy);
- }
- void dazi(uint zik,uchar bu)//打印函數
- {
- uint x;
- uint s;
- jg=1;
- for(x=0;x<zik;x++) //執行zik個循環,x軸右移zik步
- {
- while(z[63]);//暫停等待
- if(z[64]==1) break;//停止標志 跳出循環
- s=z[99+x]*(z[58]*256+z[59])/100;
- jg=0;//開激光
- delayms(s);
- jg=1; //關閉激光
- // if(y%2==0)
- motor_fxw(1); //x軸前進一步
- // else
- // motor_fxz(1); //x軸后退一步
- }
- if(z[64]==1) z[64]=0; //停止標志 跳出循環
- else //y軸進一行
- {
- y++;
- motor_fxz(zik);
- motor_fyw(1);
- }
- // if(y==zil)
- // {
- // huanyuan(zik,ziy);
- // }
- }
- /* 串口配置函數,baud-通信波特率 */
- void ConfigUART(unsigned int baud)
- {
- SCON = 0x50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式2
- TH1 = 256 - (11059200/12/32)/baud; //計算T1重載值
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- TR1 = 1; //啟動T1
- }
- void chuanlo() interrupt 4
- {
- if(RI)
- {
-
- buff[cont2]=SBUF;//每次3字節,地址高,地址低,數據,,
- cont2++;
- if(cont2==3)//每收3個字節,把數據寫入地址中
- {
- z[(buff[0]*256)+buff[1]]=buff[2];
- cont2=0;
- }
- RI=0;
- }
- }
- main()
- {
- EA=1;
- P0=0xff;
- ConfigUART(9600) ;
- z[60]=15;//默認的參數
- z[61]=50;
- z[56]=1;
- z[62]=0;
- jg=1;
- cont2=0;
- EN1=1;
- EN2=1;
- EN3=1;
- EN4=1;
- y=0;
- i=0;
- j=0;
- t=1;
- // z[54]=0;
- // z[55]=44;
- // z[60]=50;
- // z[61]=50;
- while(1)
- {
- if(z[57]==100){jg=0;}//上位機指令處理,開關激光
- if(z[57]==0) {jg=1;}
- //// //if(z[57]==100){jg=~jg;z[57]=0;}
- //// if(cont2!=0) led=1; else led=0;//指示通信是否可用
- //// // if(cont2!=0) led=0; else led=1;
- if(z[50]>0){motor_fxw(t);z[50]=0;} //x軸前進一步
- if(z[51]>0){motor_fxz(t);z[51]=0;}
- if(z[52]>0){motor_fyz(t);z[52]=0;}
- if(z[53]>0){motor_fyw(t);z[53]=0;}
- if(z[62])//開始打印標志
- {
- dazi(z[54]*256+z[55],z[56]);
- z[62]=0;//一行打印完成
- SBUF=1;//發送信息,表示打印完成
- while(!TI);
- TI=0;
- }
-
- }
- }
復制代碼
0.png (13.77 KB, 下載次數: 153)
下載附件
2018-1-21 00:13 上傳
所有資料51hei提供下載:
各版本上位機.zip
(3.93 MB, 下載次數: 881)
2018-1-20 22:44 上傳
點擊文件名下載附件
各版本上位機及源碼 下載積分: 黑幣 -5
|