chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于PIC單片機的機械臂制作教程

454398 ? 來源:工程師吳畏 ? 2019-08-08 17:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:電路圖

基于PIC單片機的機械臂制作教程

電路圖非常簡單;整個項目由12V適配器供電。然后使用兩個7805電壓調(diào)節(jié)器將此12V轉(zhuǎn)換為+ 5V。一個標(biāo)記為+ 5V,另一個標(biāo)記為+ 5V(2)。具有兩個調(diào)節(jié)器的原因是當(dāng)伺服旋轉(zhuǎn)時,它會吸入大量電流,從而產(chǎn)生電壓降。這種電壓降迫使PIC重新啟動,因此我們無法在同一+ 5V電壓軌上同時運行PIC和伺服電機。因此標(biāo)有+ 5V的電源用于為PIC單片機,LCD和電位計供電,標(biāo)有+ 5V(2)的獨立穩(wěn)壓器輸出用于為伺服電機供電。

提供0V至5V可變電壓的電位器的五個輸出引腳連接到PIC的模擬引腳An0至AN4。由于我們計劃使用定時器來產(chǎn)生PWM,因此伺服電機可以連接到任何GPIO引腳。我為伺服電機選擇了RD2到RD6的引腳,但它可以是您選擇的任何GPIO。

由于程序涉及大量調(diào)試,因此16x2 LCD顯示器也連接到PIC的portB。這將顯示正在控制的伺服電機的占空比。除此之外,我還擴展了所有GPIO和模擬引腳的連接,以防將來需要連接任何傳感器。最后,我還連接了編程器引腳H1,使用ICSP編程選項直接使用pickit3對PIC進行編程。

步驟2:在GPIO引腳上生成PWM信號以進行伺服電機控制

電路準(zhǔn)備就緒后,我們必須弄清楚如何生成PWN PIC的GPIO引腳上的信號用于控制伺服電機。我們已經(jīng)使用Timer中斷方法累了類似的東西并且成功了。在這里,我們將建立在它之上。

所有業(yè)余愛好伺服電機的工作頻率為50Hz。這意味著伺服電機的一個完整脈沖周期為1/50(F = 1/T),即20ms。在這20ms內(nèi),控制信號僅為0到2ms,而其余信號總是關(guān)閉。下圖顯示了ON時間如何僅在0到2ms之間變化,將電機從0度旋轉(zhuǎn)到180度持續(xù)20ms。

考慮到這一點,我們必須在這樣的情況下編寫程序PIC從電位計讀取0到1204的方式并將其映射到0到100,這將是伺服電機的占空比。使用此占空比,我們可以計算伺服電機的ON時間。然后我們可以定期中斷初始化定時器中斷,使其與Arduino中的millis()函數(shù)類似。這樣,我們可以將狀態(tài)GPIO引腳切換為高電平達到所需的持續(xù)時間,并在20ms(一個完整周期)后將其關(guān)閉,然后重復(fù)相同的過程?,F(xiàn)在,我們已經(jīng)了解了邏輯,讓我們進入程序。

步驟3:為機器人臂編程PIC16F8771A

總是像完整的程序一樣視頻可以在本頁末尾找到,代碼也可以從這里下載所有必要的文件。在本節(jié)中,我們將討論該程序背后的邏輯。該程序采用ADC模塊,定時器模塊和LCD模塊來控制機械臂。如果您不了解如何使用ADC功能或定時器功能或?qū)CD與PIC連接,則可以回退到相應(yīng)的鏈接以了解它們。假設(shè)讀者熟悉這些概念,下面給出了解釋。

定時器0端口配置

代碼中最重要的部分是將Timer 0設(shè)置為過流具體延遲。計算此延遲的公式可以給出為

Delay = ((256-REG_val)*(Prescal*4))/Fosc

通過使用OPTION_REG和TMR0寄存器,我們將Timer 0設(shè)置為以預(yù)分頻值32運行,REG val設(shè)置為248.我們硬件中使用的晶體頻率(Fosc)為20Mhz。使用這些值,延遲可以計算為

Delay = ((256-248)*(32*4)) / (20000000)

= 0.0000512 seconds (or)

= 0.05 msec

所以現(xiàn)在我們已經(jīng)將計時器設(shè)置為每0.05ms溢出一次。下面給出了執(zhí)行相同操作的代碼

/*****Port Configuration for Timer ******/

OPTION_REG = 0b00000100; // Timer0 with external freq and 32 as prescalar // Also Enables PULL UPs

TMR0=248; // Load the time value for 0.0001s; delayValue can be between 0-256 only

TMR0IE=1; //Enable timer interrupt bit in PIE1 register

GIE=1; //Enable Global Interrupt

PEIE=1; //Enable the Peripheral Interrupt

/***********______***********/

在伺服電機的總0ms到2ms控制窗口中,我們可以用0.05msec的分辨率控制它,這使得我們可以在0度之間為電機提供(2/0.05)40個不同的位置到180度。如果您的MCU可以支持它以獲得更多位置和精確控制,您可以進一步降低此值。

中斷服務(wù)程序(ISR)

現(xiàn)在我們將Timer 0設(shè)置為每0.05ms溢出一次,我們將TMR0IF中斷標(biāo)志設(shè)置為0.05ms。因此,在ISR函數(shù)中,我們可以重置該標(biāo)志并將名為count的變量遞增1。所以現(xiàn)在這個變量每0.05ms增加1。

void interrupt timer_isr() {

if(TMR0IF==1) // Timer flag has been triggered due to timer overflow -》 set to overflow for every 0.05ms {

TMR0 = 248; //Load the timer Value

TMR0IF=0; // Clear timer interrupt flag

count++; //Count increments by 1 for every 0.05ms }

計算占空比和導(dǎo)通時間

接下來,我們必須計算所有五個伺服電機的占空比和導(dǎo)通時間。我們有五個伺服電機,每個伺服電機用于控制臂的各個部分。因此,我們必須讀取所有五個的ADC值,并計算每個的占空比和導(dǎo)通時間。

ADC值將在0到1024的范圍內(nèi),只需將0.0976(100/1024 = 0.0976)乘以獲得的值即可轉(zhuǎn)換為0%至100%占空比。然后必須將此0到100%的占空比轉(zhuǎn)換為ON時間。我們知道,在100%占空比時,ON時間必須為2ms(180度),因此乘以0.02(2/100 = 0.02)將0到100占空比轉(zhuǎn)換為0到2ms。但是我們的定時器變量計數(shù)設(shè)置為每0.05ms增加一次。這意味著每1ms計數(shù)值將為20(1/0.05 = 20)。所以我們必須將20乘以0.02來計算我們程序的準(zhǔn)確時間,這將給出0.4(0.02 * 20 = 0.4)的值。相同的代碼如下所示,你可以看到它使用for循環(huán)重復(fù)5次。結(jié)果值存儲在T_ON數(shù)組中。

for (int pot_num=0; pot_num《=3; pot_num++)

{ int Pev_val = T_ON[pot_num];

POT_val = (ADC_Read(pot_num)); //Read the value of POT using ADC

Duty_cycle = (POT_val * 0.0976); //Map 0 to 1024 to 0 to 100

T_ON[pot_num] = Duty_cycle* 0.4;//20*0.02

選擇要旋轉(zhuǎn)的電機

我們無法控制所有五個電機,因為它會使ISR代碼大幅減速整個微控制器。所以我們一次只能旋轉(zhuǎn)一個伺服電機。要選擇旋轉(zhuǎn)哪個伺服,微控制器會監(jiān)控所有五個伺服電機的開啟時間,并將其與之前的準(zhǔn)時進行比較。如果ON時間發(fā)生變化,我們可以得出結(jié)論,必須移動特定的伺服。相同的代碼如下所示。

if (T_ON[pot_num] != Pev_val) {

Lcd_Clear();

servo = pot_num;

Lcd_Set_Cursor(2,11); Lcd_Print_String(“S:”);

Lcd_Print_Char(servo+‘0’);

if (pot_num==0)

{Lcd_Set_Cursor(1,1);

Lcd_Print_String(“A:”);}

else if (pot_num==1)

{Lcd_Set_Cursor(1,6);

Lcd_Print_String(“B:”);}

else if (pot_num==2)

{Lcd_Set_Cursor(1,11);

Lcd_Print_String(“C:”);}

else if (pot_num==3)

{Lcd_Set_Cursor(2,1);

Lcd_Print_String(“D:”);}

else if (pot_num==4)

{Lcd_Set_Cursor(2,6);

Lcd_Print_String(“E:”);}

char d2 = (Duty_cycle) %10;

char d1 = (Duty_cycle/10) %10;

Lcd_Print_Char(d1+‘0’);Lcd_Print_Char(d2+‘0’);

我們還在LCD屏幕上打印伺服占空比,以便用戶了解其當(dāng)前位置。基于接通時間的變化,可變伺服系統(tǒng)用0到4的數(shù)字更新,每個數(shù)字代表各個電動機。

控制ISR內(nèi)部的伺服電機

在ISR內(nèi)部,變量計數(shù)每0.05ms增加一次,這意味著每1ms變量將增加20。使用它我們必須控制引腳以產(chǎn)生PWM信號。如果count的值小于導(dǎo)通時間,則使用下面的行

打開該電機的GPIOPORTD = PORTD | servo_code[servo];

此處,數(shù)組servo_code []具有所有五個伺服電機的引腳細(xì)節(jié),并根據(jù)變量伺服中的值,將使用該特定伺服電機的代碼。然后邏輯OR(|)與現(xiàn)有的PORTD位,這樣我們就不會干擾其他電機的值,只更新這個特定的電機。類似地,關(guān)閉引腳

PORTD = PORTD & ~(servo_code[servo]);

我們使用邏輯反轉(zhuǎn)(?)運算符反轉(zhuǎn)了位值,然后在PORTD上執(zhí)行AND(&)操作以僅關(guān)閉所需的引腳,同時將其他引腳保持在先前的狀態(tài)。完整的代碼段如下所示。

void interrupt timer_isr() {

if(TMR0IF==1) // Timer flag has been triggered due to timer overflow -》 set to overflow for every 0.05ms {

TMR0 = 248; //Load the timer Value

TMR0IF=0; // Clear timer interrupt flag

count++; //Count increments by 1 for every 0.05ms -》 count will be 20 for every 1ms (0.05/1 = 20)) }

int servo_code[] = {0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100 };

if (count 》= 20*20)

count=0;

if (count 《= (T_ON[servo]) )

PORTD = PORTD | servo_code[servo];

else

PORTD = PORTD & ~(servo_code[servo]); }

我們知道在GPIO引腳再次打開之前,總周期必須持續(xù)20ms。因此,我們通過將count的值與400(上面討論的計算相同)進行比較來檢查計數(shù)是否超過20ms,如果是,我們必須再次將計數(shù)初始化為零。

步驟4:PIC機械臂代碼的模擬

在將代碼送到真實硬件之前,最好先模擬代碼。所以我使用Proteus來模擬我的代碼并驗證它是否正常工作。用于仿真的電路如下所示。我們使用示波器檢查是否按要求生成PWM信號。此外,我們可以驗證LCD和伺服電機是否按預(yù)期旋轉(zhuǎn)。

正如您所見,LCD根據(jù)第3電機的電位值顯示電機D的占空比為07。類似的,如果移動另一個電位器,則該電位器的占空比及其電機編號將顯示在LCD上。示波器上顯示的PWM信號

使用示波器上的光標(biāo)選項測量的總循環(huán)周期為22.2ms,非常接近所需的20ms。最后,我們確信代碼有效,因此要繼續(xù)使用電路,我們可以將其焊接在穿孔板上或使用PCB。它不會在面包板上輕松工作,因為POT總是會因連接不良而產(chǎn)生一些問題。

步驟5:使用EasyEDA進行PCB設(shè)計

設(shè)計此PIC機器人手臂,我們選擇了名為EasyEDA的在線EDA工具。我已經(jīng)使用它很長一段時間了,因為它占地面積大,易于使用,所以非常方便。在設(shè)計PCB之后,我們可以通過其低成本PCB制造服務(wù)訂購PCB樣品。他們還提供組件采購服務(wù),他們擁有大量電子元件,用戶可以訂購他們所需的組件以及PCB訂單。

在線計算和訂購樣品

完成此設(shè)計后PIC Robot PCB,您可以通過JLCPCB.com訂購PCB。要從JLCPCB訂購PCB,您需要Gerber File。要下載PCB的Gerber文件,只需單擊EasyEDA編輯器頁面上的Generate Fabrication File按鈕,然后從那里下載Gerber文件,或者您可以單擊JLCPCB上的Order,如下圖所示。這會將您重定向到JLCPCB.com,在那里您可以選擇要訂購的PCB數(shù)量,所需的銅層數(shù),PCB厚度,銅重量,甚至PCB顏色,如下圖所示:

選擇所有選項后,單擊“保存到購物車”,然后您將進入可以上傳我們從EasyEDA下載的Gerber文件的頁面。上傳您的Gerber文件,然后單擊“保存到購物車”。最后安全地點擊Checkout以完成您的訂單,然后您將在幾天后獲得PCB。他們以非常低的速率制造PCB,價格為2美元。他們的建造時間也非常少,這是48小時DHL交付3-5天,基本上你會在訂購后一周內(nèi)獲得你的PCB。

訂購PCB后,您可以查看PCB的生產(chǎn)進度以及日期和時間。您可以通過進入“帳戶”頁面并點擊“生產(chǎn)進度”進行檢查。

訂購PCB后幾天,我將PCB樣品裝在漂亮的包裝中。

在獲得這些碎片之后,我已經(jīng)在PCB上焊接了所有必需的元件。我也直接焊接POT而不是使用連接線,因為我最初使用的母線到母線可能會因為接觸松動而產(chǎn)生奇怪的模擬輸出電壓。組裝完所有組件后,我的PCB看起來像這樣。

你可能已經(jīng)注意到這塊板上只有一個7805。那是因為最初我認(rèn)為我可以通過調(diào)節(jié)器為PIC和伺服電機供電,后來我意識到我需要兩個。所以我使用外部電路通過你在這里看到的綠線為伺服電機供電。

然而,你不必?fù)?dān)心它,因為;我現(xiàn)在已對PCB進行了更改。您可以使用修改過的PCB并焊接板上的穩(wěn)壓器。

PIC機器人手臂的工作

經(jīng)過所有的疲勞工作后,我們需要付出代價。焊接電路板上的所有組件并將程序上載到PIC控制器。完整代碼如下,或者可以從這里下載。電路板上提供的編程連接器可以幫助您直接使用Pickit 3上傳程序,而不會有太多麻煩。程序上傳后,您應(yīng)該看到LCD顯示當(dāng)前正在控制的伺服。要了解有關(guān)PIC單片機編程的更多信息,請按照上一個教程進行操作。

從那里你可以簡單地轉(zhuǎn)動電位器并檢查伺服電機如何響應(yīng)每個電位器。一旦您了解了格式,您就可以控制機器人手臂執(zhí)行您需要執(zhí)行的任何操作并獲得樂趣。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PIC單片機
    +關(guān)注

    關(guān)注

    65

    文章

    693

    瀏覽量

    103058
  • 機械臂
    +關(guān)注

    關(guān)注

    13

    文章

    553

    瀏覽量

    25356
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    輝芒微FT61FC23-RB單片機兼容微芯PIC16F676芯片

    在電子技術(shù)飛速發(fā)展的今天,單片機作為眾多電子設(shè)備的核心部件,其性能與適用性直接影響著產(chǎn)品的功能與競爭力。輝芒微推出的 FT61FC23-RB 單片機,憑借與微芯 PIC16F676 芯片的高度兼容性
    的頭像 發(fā)表于 06-24 14:47 ?173次閱讀
    輝芒微FT61FC23-RB<b class='flag-5'>單片機</b>兼容微芯<b class='flag-5'>PIC</b>16F676芯片

    GZCOM-NET:為機械測試帶來高效無線解決方案!

    在智慧工廠中,機械的性能和安全性需通過靜態(tài)與動態(tài)測試來保障。批量化測試時,后臺需實時顯示數(shù)據(jù)曲線和異常數(shù)據(jù)。GZCOM-NET憑借高效穩(wěn)定的無線傳輸,為機械測試提供可靠方案。行業(yè)背
    的頭像 發(fā)表于 06-20 11:36 ?352次閱讀
    GZCOM-NET:為<b class='flag-5'>機械</b><b class='flag-5'>臂</b>測試帶來高效無線解決方案!

    Microchip發(fā)布PIC16F17576系列單片機

    對需要快速捕捉瞬態(tài)模擬信號的器件而言,在盡可能降低功耗的同時實現(xiàn)快速響應(yīng)至關(guān)重要,尤其在電池供電應(yīng)用中。為滿足這一需求,Microchip Technology Inc.(微芯科技公司)發(fā)布PIC16F17576系列單片機(MCU)產(chǎn)品。該系列
    的頭像 發(fā)表于 04-30 17:26 ?1258次閱讀

    AN4121-采用PIC16F單片機進行系統(tǒng)電源控制

    電子發(fā)燒友網(wǎng)站提供《AN4121-采用PIC16F單片機進行系統(tǒng)電源控制.pdf》資料免費下載
    發(fā)表于 01-21 14:42 ?0次下載
    AN4121-采用<b class='flag-5'>PIC</b>16F<b class='flag-5'>單片機</b>進行系統(tǒng)電源控制

    AN4873-使用PIC單片機的集成運算放大器測量水中的總?cè)芙夤腆w

    電子發(fā)燒友網(wǎng)站提供《AN4873-使用PIC單片機的集成運算放大器測量水中的總?cè)芙夤腆w.pdf》資料免費下載
    發(fā)表于 01-21 14:41 ?1次下載
    AN4873-使用<b class='flag-5'>PIC</b><b class='flag-5'>單片機</b>的集成運算放大器測量水中的總?cè)芙夤腆w

    TB3320-PIC單片機集成模擬外設(shè)入門

    電子發(fā)燒友網(wǎng)站提供《TB3320-PIC單片機集成模擬外設(shè)入門.pdf》資料免費下載
    發(fā)表于 01-21 14:01 ?0次下載
    TB3320-<b class='flag-5'>PIC</b><b class='flag-5'>單片機</b>集成模擬外設(shè)入門

    機械的高效運作,連接器起關(guān)鍵作用

    了眾多危險、重復(fù)的工作。 機械的工作原理 ? ? ?機械的運動控制是通過控制電機和傳動裝置來實現(xiàn)的??刂齐姍C的作用是將電能轉(zhuǎn)換為機械能,
    的頭像 發(fā)表于 11-11 18:07 ?813次閱讀

    單片機怎么寫入程序

    單片機(Microcontroller Unit,MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等功能集成在一個芯片上。單片機廣泛應(yīng)用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中。編寫單片機
    的頭像 發(fā)表于 10-21 11:21 ?2388次閱讀

    EN8F509直接兼容替代PIC12F508,PIC12F509微芯單片機芯片#單片機

    單片機
    szenroo
    發(fā)布于 :2024年10月19日 11:29:23

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理外部或內(nèi)部緊急事件。這種機制極大地提高了系統(tǒng)的響應(yīng)速度和處理能力,使得單片機在各種應(yīng)用領(lǐng)域中得到廣泛應(yīng)用。以下是對
    的頭像 發(fā)表于 10-17 18:03 ?1961次閱讀

    PICmicro?中檔單片機系列參考手冊

    PIC單片機中文資料
    發(fā)表于 10-09 10:44 ?1次下載

    PIC單片機的優(yōu)勢和不足之處

    PIC單片機系列,作為美國微芯公司的杰出產(chǎn)品,憑借其卓越的性能和廣泛的應(yīng)用領(lǐng)域,在單片機市場上占據(jù)了舉足輕重的地位。該系列分為基本級、中級和高級三個級別,旨在滿足不同層次的應(yīng)用需求。 PIC
    的頭像 發(fā)表于 09-25 17:22 ?948次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序的基礎(chǔ),它包含了單片機芯片、電源、接口等基本元件。在選擇單片機開發(fā)板時,需要考慮以下幾個方面: (1)單片機型號:根據(jù)項目需求選擇合適的
    的頭像 發(fā)表于 09-02 09:47 ?2730次閱讀

    OrangePi AIpro應(yīng)用:機械應(yīng)用開發(fā)指南

    2024世界人工智能大會上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區(qū)亮相,給大家?guī)鞟I+互動的沉浸式體驗。其中,搭載OrangePiAIpro開發(fā)板的智能機械吸引了
    的頭像 發(fā)表于 08-19 16:42 ?1062次閱讀
    OrangePi AIpro應(yīng)用:<b class='flag-5'>機械</b><b class='flag-5'>臂</b>應(yīng)用開發(fā)指南

    EN8F1823E完全替代PIC16F883,PIC16F1883,PIC16F1936,PIC16F1937

    PIC
    捷尚微輝芒微MCU單片機
    發(fā)布于 :2024年07月30日 16:59:15