Съдържание:

Arduino базиран сериен серво контролер: 6 стъпки
Arduino базиран сериен серво контролер: 6 стъпки

Видео: Arduino базиран сериен серво контролер: 6 стъпки

Видео: Arduino базиран сериен серво контролер: 6 стъпки
Видео: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Юли
Anonim
Arduino базиран сериен серво контролер
Arduino базиран сериен серво контролер
Arduino базиран сериен серво контролер
Arduino базиран сериен серво контролер

Това е прост сериен контролер за множество серво базирани на Arduino. (и моят първи инструктаж:))

По -голямата част от работата в това идва от това да накараме софтуера да разговаря с arduino и да направи протокол за прехвърляне на данните. Що се отнася до хардуерния аспект, използвах само два сервомотора (стандартно серво за Parallax.) Sparkfun Arduino ProtoShield и Arduino Duemilanove с ATMEGA328, но повечето от тези части могат да бъдат заменени с подобни елементи. Измислих този проект като част от RC система, но настройката на комуникацията отне много време. Ако някой има подобрения, идеи или грешки, моля не се колебайте да коментирате. РЕДАКТИРАНЕ: Написах това преди малко, наскоро го публикувах.

Стъпка 1: Неща, от които може да се нуждаете …

Нещата, от които може да се нуждаете…
Нещата, от които може да се нуждаете…
Нещата, от които може да се нуждаете…
Нещата, от които може да се нуждаете…

Някои неща ще ви трябват, за да изградите това. 1. Arduino платка (вие избирате) 2. две (или едно) сервоустройства 3. кабели за джъмпер 4. Visual Studio 2008 Express - връзка (по избор) 5. Arduino IDE - връзка За съжаление феновете на Linux и Apple, моята програма работи само на windows за сега, но все още можете да изпращате ръчно серийни команди до arduino, без да променяте кода.

Стъпка 2: Свържете хардуера

Свържете хардуера
Свържете хардуера

Няма нищо сложно в тази стъпка. Просто свържете едно серво към щифт 9, а другото към щифт 10.

Стъпка 3: Програмирайте Arduino

Програмирайте Arduino
Програмирайте Arduino

сега можете да качите скицата в arduino.

Ето една проста разбивка на кода: #include Servo myservo; // създаване на серво обект за управление на серво Серво myservo1; int incomingByte = 0, datacount = 0, брояч = 0, готов = 0; // за входящи серийни данни char данни [10]; const char verify [8] = "ma11hew"; команда char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // отваря сериен порт, задава скорост на предаване на данни Serial.println ("Здравей, Arduino тук!"); // добавено, за да се идентифицира серийният порт. Това просто настройва серийния порт и сервомоторите. int i; за (i = 0; i <180; i ++) {myservo.write (i); забавяне (15); } myservo.write (5); за (i = 0; i <180; i ++) {myservo1.write (i); забавяне (15); } myservo1.write (5); } Просто движение, за да проверите дали сервомоторите работят правилно. void loop () {готов = 0; брояч = 0; while (1 == 1) {if (Serial.read ()! = verify [counter]) {break; } if (брояч == 6) {забавяне (20); команда [0] = Serial.read (); команда [1] = Serial.read (); // if (Serial.read () == ((команда [1] * 12) % 8)) // {готов = 1; //} Serial.println ("запазена команда"); } брояч ++; забавяне (2); } това проверява серийния буфер за правилния низ за оторизация, след което грабва два байта за командата. коментираното изявление if позволява импровизирана контролна сума, но би затруднило ръчното свързване. ready може да бъде зададено на 0, така че командите няма да бъдат анализирани, например в случай на повредени данни. // търсене чрез команди if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("управление на дросела на щифт 9 към:"); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo.write (карта (команда [1], 32, 126, 2, 180)); } if (команда [0] == 'S') {команда [0] = 0; Serial.print ("управление на дросела на щифт 10 към:"); Serial.println (карта (команда [1], 32, 126, 2, 180), DEC); myservo1.write (map (команда [1], 32, 126, 2, 180)); }}} останалата част от кода е да търси команда за валидни команди (T или S.), ако и двете съвпадат, той взема следващия байт и го изпраща към серво. повече на картата (команда [1], 32, 126, 2, 180) по -късно … кодът тук може да се разширява за всичко друго, от което може да се нуждаете (напр. светлини, двигатели, IR и т.н.), този код трябва да работи добре, без модификации.

Стъпка 4: Инсталирайте софтуер

Инсталирайте софтуер
Инсталирайте софтуер

Имам два начина да инсталирам този … nsis инсталатор: Изтеглете самоизвличащия се инсталатор по -долу и го стартирайте. По време на инсталацията ще имате възможност да инсталирате източници. двоичният пакет за инсталиране инсталира core c ++ dlls, така че да може да се изпълнява на компютър без визуален c ++ вече инсталиран. След като инсталаторът приключи, можете да го стартирате от работния плот или менюто "Старт". zip начин (непроверен): Изтеглете и стартирайте, трябва да работи. може би. (Архивът zip има същата структура на папки, създадена от инсталатора, без източници. Нямам машина без визуално студио, за да го тествам, за да не работи.)

Стъпка 5: Използвайте интерфейсната програма

Използвайте интерфейсната програма
Използвайте интерфейсната програма
Използвайте интерфейсната програма
Използвайте интерфейсната програма

За да използвате програмата, първо изберете скоростта на предаване, определена в скицата на arduino. Немодифицираната скица по подразбиране е 38400 бод, но може да бъде променена според вашите нужди за неща като по -бавна радиовръзка. забележка: скоростите на предаване по -високи от 38400 не са много стабилни, мисля, че това е така, защото uart се запълва, преди данните да могат да бъдат обработени. След това изберете COM порта, който да използвате. програмата по подразбиране е COM4, не забравяйте да я промените или програмата ще се срине. Накрая щракнете върху отвори. Ако всичко е наред, програмата ще отвори избрания сериен порт при избрана скорост на предаване. В противен случай програмата вероятно ще се срине с необработено изключение. уверете се, че портът е правилен и опитайте отново. Използвайте текстовите полета, за да изпратите директни команди към arduino. "Картата (команда [1], 32, 126, 2, 180)" мащабира всички 94 възможни команди, * интервал * до ~, четими от arduino в ASCII до 2 до 180 за серво. всеки байт по -малък от ASCII 32 (интервал) или над 126 (~) по подразбиране е 63 (?) Лентите за проследяване осигуряват интерфейс за директни команди за директни команди. всяка стъпка постепенно изпраща серийна команда към arduino.

Стъпка 6: Бъдете креативни

Бъдете креативни!
Бъдете креативни!
Бъдете креативни!
Бъдете креативни!

Помислете за готини неща, които да направите с това. Някои идеи: 1. Дистанционна дроселова клапа за кола. 2. Стойка за 3D камера 3. Подводен роувър Забавлявайте се !!

Препоръчано: