Агуулгын хүснэгт:

Ажиллаж буй RC машины хурд хэмжигч: 4 алхам (зурагтай)
Ажиллаж буй RC машины хурд хэмжигч: 4 алхам (зурагтай)

Видео: Ажиллаж буй RC машины хурд хэмжигч: 4 алхам (зурагтай)

Видео: Ажиллаж буй RC машины хурд хэмжигч: 4 алхам (зурагтай)
Видео: Откосы на окнах из пластика 2024, Арваннэгдүгээр
Anonim
Ажиллаж буй RC машины хурд хэмжигч
Ажиллаж буй RC машины хурд хэмжигч

Энэ бол Хөнгөн Land Rover -ийн RC -ийн томоохон бүтцийн нэг хэсэг болгон бүтээсэн богино төсөл юм. Би хяналтын самбар дээр ажиллаж байгаа хурд хэмжигчийг байрлуулахыг хүсч байна гэж шийдсэн боловч servo нь үүнийг огтлохгүй гэдгийг мэдэж байсан. Зөвхөн нэг боломжийн сонголт байсан: arduino ашиглах!

Эхлэх ёстой жаахан мэдээлэл … Би кодлогч эсвэл электроникийн хүн биш. Би цахилгаан эрчим хүчийг усны урсгалын тухай боддог хэвээр байгаа бөгөөд резистороор зарим талаар нууцлаг байдаг. Үүнийг хэлэхэд хэрэв би энэ ажлыг хийж чадсан бол та ч бас үүнийг хийх боломжтой байх ёстой!

ХЭСГИЙН ЖАГСААЛТ:

Микроконтроллер: Би тус бүр нь 1 фунт стерлингийн үнэтэй ATTiny85 чип ашигладаг байсан.

Микроконтроллер програмист: Чип дээр код оруулахын тулд үүнийг програмчлах арга хэрэгтэй. Ердийн arduino -ийн хувьд энэ бол зүгээр л USB кабель боловч ATTiny чипийн хувьд танд нэмэлт зүйл хэрэгтэй болно. Үүнийг хийхийн тулд та өөр arduino ашиглаж болно, эсвэл над шиг Sparkfun -ийн Tiny AVR програмист ашиглаж болно.

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

Би үүнийг санал болгож байна, учир нь би тэдгээрийг янз бүрийн аргаар програмчлахыг оролдсон бөгөөд энэ нь хамгийн хялбар юм. Удирдах зөвлөл нь бага зэрэг үнэтэй боловч хэрэв та ATTiny -ийн олон төслийг хийвэл сайн хөрөнгө оруулалт болно.

8 зүү чипний залгуур: Хэрэв та чипийг шууд гагнахаас илүү залгуурт хийвэл угсрахдаа алдаа гаргах боломжтой болно. Туршлагаас ярьсан - хэн чипийг дахин програмчлахыг хүсэхгүй байна.

Конденсатор: 100nF (кодыг 104) салгах конденсаторыг ашигладаг. Яагаад гэдгийг нь сайн ойлгохгүй байна, гэхдээ интернэтэд конденсаторыг салгах нь чухал гэдгийг уншсан болохоор үнэн байх ёстой …

Резистор: Ардуино руу шугам татахын тулд 10 кОм эсэргүүцэл ашигладаг. Дахин хэлэхэд, электроникийн бас нэг нууц.

Perfboard/Stripboard: Таны хэлхээг угсрах зарим самбар.

Ороомог утас: Энгийн бүрээстэй утас нь мотор дээр гагнахад хэт зузаан байдаг. Нарийн пааландсан утас ашиглах нь моторын терминал дээрх ачааллыг бууруулж, таны амьдралыг ихээхэн хөнгөвчлөх болно.

Servo Wire: 3 зүү JR эмэгтэй залгуурт бэхлэгдсэн гурван утастай тууз. Би "өөрчилж" байсан шатсан сервогоос минийхийг авсан.

Stepper мотор: Би 6 мм хоёр туйлт Nidec stepper мотор ашигласан. Аливаа жижиг stepper нь жижиг байх ёстой, гэхдээ stepper -ийг Arduino -аас шууд хөөж байгаа тул ажиллах ёстой.

Толгойн зүү: Шаардлагагүй, гэхдээ хэрэв та stepper -ийг 4 толгойн зүүгээр холбож, хэлхээндээ залгуур байрлуулбал хялбархан суулгахын тулд самбараа салгаж болно.

Компьютер: Самбараа програмчлахын тулд танд компьютер хэрэгтэй болно. Магадгүй Arduino IDE -тэй. Тэгээд магадгүй USB кабель. Хэрэв энэ нь цахилгаан кабельтай бол илүү дээр юм.

Алхам 1: Систем

Миний үүсгэсэн системийн үндсэн тойм бол RC хүлээн авагчаас ирж буй Pulse Width Modulation (PWM) дохиог ATTiny 85 микроконтроллер (uC) -ээр дамжуулан stepper мотор цэвэрлэх төхөөрөмж болгон хувиргах арга юм.

Энд ХОУХ -ны дохио ба RC -ийн эх сурвалж байгаа боловч үүнийг хуулбарлахын тулд та үүнийг ойлгох шаардлагагүй юм.

en.wikipedia.org/wiki/Servo_control

ATTiny бол Arduino -ийн хамгийн дуртай амт юм. Учир нь жижиг зүйлс, RC төслүүдэд маш сайн нийцдэг. ATTiny -ийн гол сул тал бол үүнийг програмчлахын тулд арай илүү тохиргоо шаарддаг боловч үүнийг тохируулсны дараа тэдгээр нь маш хямд тул та бүх төрлийн төслүүдэд зориулж стек худалдаж авах боломжтой болно.

Хурд хэмжигч залгуурын хэмжээ нь хэт бага тул эргэх холболттой хөдөлгүүртэй тул пропорциональ хариу авахын тулд stepper мотор ашиглах шаардлагатай байв. Stepper мотор гэдэг нь тодорхой хэмжээгээр (эсвэл алхам алхмаар …!) Хөдөлдөг мотор бөгөөд энэ нь иймэрхүү санал хүсээгүй системд хамгийн тохиромжтой болгодог. Цорын ганц анхааруулга бол "алхамууд" нь үүссэн хөдөлгөөнийг гөлгөр биш харин гөлгөр болгох болно. Хэрэв та нэг эргэлтэнд хангалттай алхамтай stepper авбал энэ нь мэдэгдэхүйц биш боловч миний энэ төсөлд ашиглаж байсан stepper -ийг бүрэн эргүүлэхэд ердөө 20 орчим алхамтай байхад өнцгийн үсрэлт маш муу байна.

Цахилгаан асаах үед зүүг тэг болгохын тулд системийг хоёр эргэлтээр арагш нь гүйлгэх болно. Хурд хэмжигч нь тэг тэмдэг байхыг хүсч байгаа амрах зүү хэрэгтэй, эс тэгвээс энэ нь үүрд эргэх болно. Дараа нь ХОУХ -ны урагш ба урвуу дохиог моторын тогтоосон тооны алхамаар дүрсэлдэг. Хялбар, тийм үү …?

Алхам 2: Програм хангамж

Анхааруулга: Би програмист хүн биш. Энэ төслийн хувьд би доктор Франкенштейний дижитал эквивалент бөгөөд олсон кодын янз бүрийн хэсгүүдээс ямар нэгэн зүйл угсарч байна.

Тиймээс, RC дохиог тайлбарлах кодыг бүтээсэн Duane B -д чин сэтгэлээсээ талархаж байна.

rcarduino.blogspot.com/

Аналог хэмжигч болгон stepper ажиллуулах кодыг хийсэн Ардунаутад:

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

Тэгээд хоёуланд нь, чиний кодын төлөө хийсэн зүйлээсээ чин сэтгэлээсээ уучлалт гуйж байна.

ATTiny -д байршуулах зүйл энд байна:

#тодорхойлох THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - тасалдлын дугаарыг хавсаргахInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - digitalRead дахь дугаарын дугаарыг ашиглана уу Цахилгаан RC машин дээрх төвийг сахигч тохируулагчийг #тодорхойлох UPPER_THROTTLE 2000 // энэ нь цахилгаан RC машин дээрх хамгийн их тохируулагчийн микронекундээр үргэлжлэх хугацаа юм. DEADZONE 50 // энэ бол тохируулагчийн үхлийн бүс юм. Нийт үхлийн бүс хоёр дахин их байна. #incidee STEPS 21 // алхам бүрт нэг алхам хийх (315 ° -аар хязгаарлагддаг) Хурд хэмжигчийн хамгийн их явах зайг тохируулахын тулд үүнийг өөрчилнө үү. #coil1 3 -ийг тодорхойлох // ороомог зүү. ATTiny нь stepper -д 0, 1, 3, 4 тээглүүр ашигладаг. 2 -р зүү нь тасалдлыг зохицуулж чадах цорын ганц зүү тул оролт байх шаардлагатай. #define COIL2 4 // Хэрэв stepper мотор зөв ажиллахгүй бол эдгээрийг өөрчилж үзээрэй. #define COIL3 0 #define COIL4 1 // stepper ангийн жишээг үүсгэнэ: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Алхам дахь байрлал (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // сул зогсолт хийх үед дахин тохируулах цаг int Resetval = 0; дэгдэмхий int ThrottleIn = LOWER_THROTTLE; дэгдэмхий гарын үсэг зураагүй урт StartPeriod = 0; // тасалдалд тохируулсан // бид тусдаа хувьсагчийн оронд nThrottleIn = 0 гогцоонд ашиглаж болох боловч bNewThrottleSignal -ийг ашиглан бидэнд шинэ дохио байгааг илэрхийлнэ // энэ эхний жишээнд илүү ойлгомжтой болно void setup () {// Arduino -д хэлээрэй. INT0 (дижитал зүү 2) нь HIGH -аас LOW эсвэл LOW -ээс HIGH хүртэл өөрчлөгдөх бүрт calcInput функцийг дуудахыг хүсч байна // эдгээр өөрчлөлтийг барьж чадвал оролтын импульс хэр удаан хавсарч байгааг тооцоолох боломжтой болно (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // моторын хурдыг 30 эрг/ мин (ойролцоогоор 360 PPS) болгож тохируулна уу. step.step (STEPS * 2); // Байршлыг дахин тохируулах (X алхам цагийн зүүний эсрэг). } void loop () {Дахин тохируулах = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Дахин тохируулах = 0; } // Урвуу зураглал өөр бол (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Дахин тохируулах = 0; } // Хэрэв хүрээний гадна байгаа бол (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Дахин тохируулах = 0; } // Хүрээнээс доогуур байвал өөр (хэрэв ThrottleInAvg Resetcounter) {stepper.step (4); // Би RC дохио удаан хугацааны турш үхлийн бүсэд байвал өөрийгөө дахин тохируулахыг stepper-т хэлэхийг оролдож байна. Кодын энэ хэсэг үнэхээр ажилладаг эсэхийг мэдэхгүй байна. }} int val = SPEED; // потенциометрийн утгыг авах (0-1023 муж) val = map (val, 0, 255, 0, STEPS * 0.75); // stepper муж дахь савны хүрээг газрын зураг. if (abs (val - pos)> 2) {// хэрэв ялгаа нь 2 алхамаас их байвал. if ((val - pos)> 0) {stepper.step (-1); // нэг алхам зүүн тийш шилжих. pos ++; } if ((val - pos) <0) {stepper.step (1); // нэг алхам баруун тийш шилжих. pos--; }} // саатал (10); } void calcInput () {// хэрэв зүү өндөр байвал энэ нь тасалдлын эхлэл бол (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// микро ашиглах цагийг авах - манай код үнэхээр завгүй болоход энэ нь буруу болно. гэхдээ одоогийн хэрэглээний хувьд // ойлгоход хялбар бөгөөд маш сайн ажилладаг StartPeriod = micros (); } өөр { / хэрэв зүү бага байвал импульсийн унах ирмэг тул одоо бид эхлэх хугацааг ulStartPeriod -аас хасах замаар импульсийн үргэлжлэх хугацааг тооцоолж болно micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

ATTiny85 програмчлах талаар дэлгэрэнгүй мэдээллийг эндээс үзнэ үү.

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

Алхам 3: Тоног төхөөрөмж

Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж

Цахилгаан хэлхээг бий болгох схемийг үзнэ үү. Үүнийг хэрхэн яаж угсрах нь танд хамаарна, гэхдээ би хэлхээний самбарын загварчлалд ашигладаг, чипийг залгуурт холбоход ашигладаг жаахан тууз/перфрон хавтанг ашиглахыг санал болгож байна.

C1 = 100nF

R1 = 10kΩ

Хамгийн үр дүнтэй байхын тулд конденсаторыг чиптэй аль болох ойрхон холбох ёстой.

Паалантай утсыг моторт гагнахдаа мотор дээрх терминалууд нь ороомгийн утсыг салгаж, хөдөлгүүрт таслах дуртай байдаг тул маш болгоомжтой байгаарай. Үүнийг арилгахын тулд утсыг гагнаж, дараа нь 2 хэсгээс бүрдэх эпоксидийн том бөмбөлгийг үе дээр тавьж, эмчилж, утсыг хооронд нь мушгих нь хамгийн сайн шийдэл болно. Энэ нь терминал тус бүрийн үе мөчний ачааллыг бууруулж, тасрахаас сэргийлнэ. Хэрэв та үүнийг хийхгүй бол тэд баталгаатай дор хаяж тохиромжтой цагтаа салах болно.

Хэрэв та толгойн зүү холбогч хийж, тээглүүрийг дараах байдлаар тохируулаарай: [Ca1, Cb1, Ca2, Cb2] Ca1 нь Coil A, утас 1 гэх мэтийг зогсооно. эргэн тойронд.

Тэг байрлалыг эсрэгээр нь тохируулахын тулд хэмжигч нь зогсох шаардлагатай болно. Боломжтой бол зүүг металлаар хийхийг зөвлөж байна. Энэ нь төгсгөлд нь хүрэх үед уян хатан байдлыг зогсооно. Зүүг сайн байрлалд оруулах арга бол зүүг тэнхлэгт түр зуур нааж, модулийг асааж, амраад, дараа нь зүүг тэнхлэг дээр нь тавиад тэнхлэг дээрх зүүг салгаад дахин нааж болно. зогсоох. Энэ нь зүүг хөдөлгүүрийн соронзон залгууртай уялдуулж, таны зүү үргэлж зогсож байх ёстой.

Алхам 4: Эпилог

Энэхүү товч заавар танд таалагдсан гэж найдаж байна. Хэрэв та эдгээрийн аль нэгийг барьж байгаа бол надад мэдэгдээрэй!

Амжилт хүсье!

Зөвлөмж болгож буй: