Orodha ya maudhui:

Kufanya kazi kwa kasi ya gari ya RC: Hatua 4 (na Picha)
Kufanya kazi kwa kasi ya gari ya RC: Hatua 4 (na Picha)

Video: Kufanya kazi kwa kasi ya gari ya RC: Hatua 4 (na Picha)

Video: Kufanya kazi kwa kasi ya gari ya RC: Hatua 4 (na Picha)
Video: VIDEO;MREMBO AKIFANYA NA CHUPA YA FANTA 2024, Novemba
Anonim
Kufanya kazi RC Speedometer ya gari
Kufanya kazi RC Speedometer ya gari

Huu ni mradi mfupi ambao niliunda kama sehemu ya ujenzi mkubwa wa RC wa Land Rover Nyepesi. Niliamua kuwa nilipenda kuwa na kipima kasi cha kufanya kazi kwenye dashibodi, lakini nilijua kuwa servo haitaikata. Kulikuwa na chaguo moja tu inayofaa: tumia arduino!

Asili kidogo kuanza na … mimi sio mtu wa kuweka alama au elektroniki. Bado ninafikiria juu ya umeme kwa suala la mtiririko wa maji na nimefahamishwa kwa kiasi fulani na vipinga. Hiyo ilisema, ikiwa hata mimi niliweza kuifanya kazi hii, basi unapaswa pia!

Orodha ya sehemu:

Microcontroller: Nilitumia chip ya ATTiny85, ambayo iligharimu karibu Pauni 1 kila moja.

Programu ya Microcontroller: Ili kupata nambari kwenye chip, unahitaji njia ya kuipanga. Na arduino ya kawaida hii ni kebo ya USB tu, lakini kwa chip ya ATTiny, unahitaji kitu cha ziada. Unaweza kutumia arduino nyingine kufanya hii au, kama mimi, unaweza kutumia programu ndogo ya AVR kutoka Sparkfun.

learn.sparkfun.com/tutorials/tiny-avr-prog …….

Napenda kupendekeza hii, kwani nimejaribu kuwapanga kwa njia anuwai na hii ndio rahisi zaidi. Bodi ni ghali kidogo, lakini uwekezaji mzuri ikiwa unafanya miradi mingi ya ATTiny.

Pini Tundu la Chip: Ikiwa utaweka chip kwenye tundu badala ya kuiunganisha moja kwa moja, unaweza kujipa makosa kadhaa kwenye mkutano. Inasemwa kutoka kwa uzoefu - hakuna mtu anayetaka kufuta vidonge ili kuzipanga upya.

Capacitor: capacitor ya kukata 100nF (nambari 104) hutumiwa. Sielewi ni kwanini, lakini nilisoma kuwa kutenganisha capacitors ni muhimu kwenye wavuti, kwa hivyo lazima iwe kweli…

Kizuizi: Kinzani ya 10kΩ hutumiwa kuvuta laini kwenye arduino. Tena, bado siri nyingine ya umeme.

Perfboard / Stripboard: Baadhi ya ubao wa msingi ambao unaweza kukusanya mzunguko wako.

Waya ya waya Kutumia waya mzuri wa enamelled itapunguza mafadhaiko kwenye vituo vya magari na kufanya maisha yako kuwa rahisi zaidi.

Servo Wire: Ribbon ya waya tatu inayomalizika kwenye kuziba 3-pin JR kike. Nilipata yangu kutoka kwa servo iliyoteketezwa ambayo nilikuwa "nikibadilisha".

Stepper Motor: Nilitumia motor bipolar Nidec stepper 6mm. Stepper yoyote ndogo inapaswa kufanya kazi, ingawa kuiweka ndogo, kwani stepper inaendeshwa moja kwa moja kutoka Arduino.

Pini za kichwa

Kompyuta: Ili kupanga bodi yako, utahitaji kompyuta. Labda na IDE ya Arduino. Na labda kebo ya USB. Ikiwa ina kebo ya umeme pia, basi bora zaidi.

Hatua ya 1: Mfumo

Muhtasari wa kimsingi wa mfumo niliounda ilikuwa njia ambayo ishara ya Upana wa Pulse (PWM) inayokuja kutoka kwa mpokeaji wa RC inabadilishwa kuwa gari la kukanyaga kupitia ATTiny 85 microcontroller (uC).

Hapa kuna rasilimali kwenye ishara za PWM na RC, lakini kuiga hii hauitaji kabisa kuielewa.

en.wikipedia.org/wiki/Servo_control

ATTiny ni ladha ninayopenda ya Arduino kwa sababu ni ndogo na pini za kutosha za I / O kufanya vitu vya msingi, kwa hivyo inafaa kabisa katika modeli ndogo na miradi ya RC. Ubaya kuu wa ATTiny ni kwamba inahitaji usanidi zaidi ili uweze kupanga moja, lakini ukishaiweka imewekwa ni bei rahisi sana unaweza kununua mwingi wao kwa kila aina ya miradi.

Ukubwa wa piga kasi ya kasi ni ndogo sana kuwa na motor inayolenga na maoni, kwa hivyo ili kuwa na majibu sawa sawasawa motor ya stepper ilitakiwa kutumika. Motor stepper ni motor ambayo inahamishwa kwa kiwango tofauti (au hatua…!), Ambayo inafanya kuwa bora kwa mfumo wa maoni-kama hii. Tahadhari ya pekee ni kwamba 'hatua' zitasababisha harakati inayosababisha kuwa nyepesi kinyume na laini. Ikiwa unapata stepper na hatua za kutosha kwa kila mzunguko, hiyo haionekani, lakini kwa stepper ambayo nilitumia katika mradi huu kuwa na hatua 20 au hivyo kwa mzunguko kamili, kuruka kwa pembe ni mbaya kabisa.

Mfumo, juu ya kuongeza nguvu, utarudisha stepper nyuma kwa mapinduzi mawili, ili kuziba sindano. Kasi ya kasi inahitaji pini ya kupumzika ambapo unataka alama ya sifuri iwe, au sivyo itazunguka milele. Halafu inachora ramani za mbele na za nyuma za ishara za PWM kwa idadi kadhaa ya hatua za gari. Rahisi, sawa…?

Hatua ya 2: Programu

Kanusho: Mimi sio programu. Kwa mradi huu mimi ni sawa na dijiti ya Dk Frankenstein, kukusanya kitu kinachofanya kazi kutoka kwa nambari kadhaa za nambari zilizopatikana.

Kwa hivyo, shukrani zangu za dhati kabisa kwenda kwa Duane B, ambaye alifanya nambari ya kutafsiri ishara za RC:

rcarduino.blogspot.com/

Na kwa Ardunaut, ambaye alifanya nambari ya kuendesha stepper kama kipimo cha analojia:

arduining.com/2012/04/22/arduino-driving-a…

Na kwa wote wawili, samahani yangu ya dhati kabisa kwa kile nilichofanya kwa nambari yako.

Sasa hiyo ni nje ya njia, hii ndio unayopakia kwenye ATTiny:

#fasili THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - tumia nambari ya kukatiza katika ambatishaKukatiza #fafanua THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - tumia nambari ya PIN katika dijitaliSoma #fafanua NEUTRAL_THROTTLE 1500 // hii ndio muda ya kukaba kwa upande wowote kwenye Gari ya umeme ya RC #fasili UPPER_THROTTLE 2000 // huu ndio muda wa microseconds ya upeo wa juu kwenye Gari ya umeme ya RC #fafanua LOWER_THROTTLE 1000 // huu ni muda wa microseconds ya nminimum kaba kwenye Gari ya umeme ya RC #fafanua DEADZONE 50 // hii ni deadzone ya koo. Deadzone jumla ni mara mbili hii. # pamoja na #fafanua HATUA 21 // hatua kwa mapinduzi (imepunguzwa hadi 315 °) Badilisha hii ili kurekebisha safari ya juu ya spidi ya mwendo. #fafanua COIL1 3 // Pini za Coil. ATTiny hutumia pini 0, 1, 3, 4 kwa stepper. Pini 2 ni pini pekee inayoweza kushughulikia usumbufu kwa hivyo inahitaji kuwa pembejeo. #fafanua COIL2 4 // Jaribu kubadilisha hizi ikiwa motor ya stepper haiendi vizuri. #fafanua COIL3 0 #fafanua COIL4 1 // tengeneza mfano wa darasa la stepper: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Nafasi katika hatua (0-630) = (0 ° -315 °) int SPEED = 0; kuelea ThrottleInAvg = 0; Vipimo vya wastani = 60; kuelea Resetcounter = 10; // wakati wa kuweka upya wakati wa uvivu wa kukimbilia int Resetval = 0; tete tete ThrottleIn = LOWER_THROTTLE; Kipindi cha StartPeriod = 0; // kuweka kwa kukatiza // tunaweza kutumia nThrottleIn = 0 kwa kitanzi badala ya tofauti tofauti, lakini kutumia bNewThrottleSignal kuonyesha kuwa tuna ishara mpya // ni wazi kwa mfano huu wa kwanza batili kuanzisha () {// mwambie Arduino tunataka kazi calcInput iitwe wakati wowote INT0 (dijiti 2 ya dijiti) inabadilika kutoka HIGH hadi LOW au LOW hadi HIGH // kukamata mabadiliko haya yataturuhusu kuhesabu ni muda gani mapigo ya pembejeo yanaambatanishwaInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); kasi ya kasi (50); // weka kasi ya gari kuwa 30 RPM (aproksi ya PPS 360). hatua ya hatua (STEPS * 2); // Rudisha Nafasi (X hatua kinyume na saa). } kitanzi batili () {Resetval = millis; kwa (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = ramani (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Kuweka upya = 0; } // Kubadilisha ramani nyingine ikiwa (ThrottleInAvg LOWER_THROTTLE) {SPEED = ramani (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Kuweka upya = 0; } // Kati ya masafa ya juu zaidi ikiwa (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Kuweka upya = 0; } // Kati ya masafa mengine chini ikiwa (ThrottleInAvg Resetcounter) {stepper.step (4); // Ninajaribu kumwambia stepper kujiweka upya upya ikiwa ishara ya RC iko kwenye deadzone kwa muda mrefu. Sijui ikiwa sehemu hii ya nambari inafanya kazi kweli. }} int val = KASI; // pata thamani ya potentiometer (masafa 0-1023) val = ramani (val, 0, 255, 0, STEPS * 0.75); // ramani ya sufuria katika anuwai ya stepper. ikiwa (abs (val - pos)> 2) {// ikiwa tofauti ni kubwa kuliko hatua mbili. ikiwa ((val - pos)> 0) {stepper.step (-1); // songa hatua moja kwenda kushoto. pos ++; } ikiwa ((val - pos) <0) {stepper.step (1); // songa hatua moja kwenda kulia. pos -; }} // kuchelewa (10); } batili calcInput () {// ikiwa pini ni kubwa, ni mwanzo wa kukatisha ikiwa (digitalRead (THROTTLE_SIGNAL_IN_PIN) == JUU) {// pata wakati wa kutumia hadubini - wakati nambari yetu inapokuwa na shughuli nyingi hii itakuwa si sahihi, lakini kwa programu ya sasa // rahisi kuelewa na inafanya kazi vizuri sana StartPeriod = micros (); } kingine {// ikiwa pini iko chini, ni makali yake ya kushuka kwa mapigo kwa hivyo sasa tunaweza kuhesabu muda wa kunde kwa kutoa wakati wa kuanza wa ulStartPeriod kutoka wakati wa sasa uliorudishwa na micros () ikiwa (StartPeriod) {ThrottleIn = (int) (micros () - Kipindi cha Kuanza); Kipindi cha Kuanza = 0; }}}

Rejea hii kwa habari zaidi juu ya programu ya ATTiny85:

learn.sparkfun.com/tutorials/tiny-avr-prog …….

Hatua ya 3: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa

Rejea mchoro wa mzunguko wa kujenga mzunguko. Jinsi unavyokusanya ni juu yako, lakini ningependekeza utumie kidogo ya ubao / ubao uliotumiwa kwa prototyping ya bodi ya mzunguko, na kuweka chip kwenye tundu.

C1 = 100nF

R1 = 10kΩ

Kifaa kinapaswa kuwekwa karibu na chip iwezekanavyo ili iwe na ufanisi zaidi.

Unapotengeneza waya zilizopigwa kwa motor, kuwa mwangalifu sana, kwani vituo kwenye motors hupenda kukatika na kukata waya wa coil kwa motor. Ili kurekebisha hili, suluhisho nzuri ni kuziunganisha waya, na kisha kuweka kiunga kikubwa cha sehemu mbili ya epoxy juu ya pamoja,, iwe iponye, halafu pindua waya pamoja. Hii hupunguza mafadhaiko kwenye viungo vya mtu binafsi na inapaswa kuwazuia kukatika. Usipofanya hivi, wataondoka wakati unaofaa, umehakikishiwa.

Ukitengeneza kiunganishi cha pini ya kichwa, na uweke pini hivi: [Ca1, Cb1, Ca2, Cb2] na Ca1 imesimama kwa Coil A, waya 1 nk. Hii hukuruhusu kubadilisha mwelekeo wa kuzunguka wa kupima kwa kubadilisha kuziba karibu.

Upimaji utahitaji mwisho ili kulinganisha nafasi ya sifuri dhidi. Napenda kupendekeza kutengeneza sindano kutoka kwa chuma ikiwezekana. Hii inaizuia kubadilika wakati inapiga mwisho. Njia ya kupata sindano katika nafasi nzuri ni gundi ya sindano kwa mhimili, weka nguvu moduli, iache ipumzike, na kisha ondoa na gundi tena sindano kwenye mhimili, na sindano ikilala dhidi ya mwisho. Hii inalinganisha sindano na utaftaji wa umeme, na inahakikisha kuwa sindano yako inapaswa kupumzika kila wakati dhidi ya mwisho.

Hatua ya 4: Epilogue

Tunatumahi kuwa umefurahiya mafunzo haya mafupi, na umeona ni muhimu. Ikiwa utaunda mojawapo ya haya, nifahamishe!

Bahati njema!

Ilipendekeza: