Сделал рабочий прототип в макетном исполнении.
Все работает так, как и задумывалось.
Осталось теперь водрузить это на коптер.
В итоговом варианте будет стоять ардуина мини и сонар HC-SR04. места не занимает, весит ничего.
Вот весь скетч, полностью допиленная и рабочая версия.
Конечно, он не совершенен, можно сделать его более оптимальным, прикрутить бародатчик итд - но я этого не умею.
(как свернуть не знаю)
#include "Servo.h" //библеотека серво
Servo myservo;
const int Trig = 8; //подключаем вход Триггер сонара к 8 цифровому пину ардуины
const int Echo = 9; //подключаем выход Эхо сонара к 9 цифровому пину ардуины
const int ledPin = 13; // 13 – если будете использовать встроенный в Arduino светодиод
void setup()
{
myservo.attach(10); // Servo присоединен к 10 выводу
myservo.writeMicroseconds(700); // устанавливаем ноги в положиние для старта при подачи питания, если они уже в нем не стоят
delay(5000); //ждем 5 с после подачи питания(все равно, пока инициализируются гиры, компас жпс итд.)
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
unsigned int time_us=0;
unsigned int distance_sm=0;
void loop()
{
digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
delayMicroseconds(10); // Удерживаем 10 микросекунд
digitalWrite(Trig, LOW); // Затем убираем
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=time_us/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт для проверки сонара и расстояния
if (distance_sm<200) // Если расстояние до земли менее 200 сантиметром(расстояние можно менять в пределах характеристик сонара HC-SR04 )
{
digitalWrite(ledPin, 1);
myservo.writeMicroseconds(700); // то складываем ноги
delay(500); // ждем 0,5с для защиты от дребезга и ложных сработок
}
else
{
digitalWrite(ledPin, 0);
myservo.writeMicroseconds(2300); //если меньше 200 см, то раскладываем для посадки
delay(500);
}
delay(100);
}
Comments
А если дистанция равна 200?
else надо писать!
А если дистанция равна 200?
else надо писать!
в данном случае это не так принципиально, тк высота плавает, и ровно 200 никогда долго не будет.
кстати в моем коде на компьютере, написано именно елсе.
Да, в этом простом случае некритично, но некультурно так писать. Успехов!
у сонара еще какой то глюк был на шум от винтов. надо с работающими двигателями проверить. А так круто!
у сонара еще какой то глюк был на шум от винтов. надо с работающими двигателями проверить. А так круто!
Про глюк не знал!
соберу все, и проверю.
А вообще, идея не нова. Уже позже нашел в сети еще несколько вариантов, втч и на этом форуме.
А предусмотрен канал управления с пульта для принудительного поднятия опускания ног?
А предусмотрен канал управления с пульта для принудительного поднятия опускания ног?
На данный момент нет, но можно либо дописать код, либо просто вывести провод к приемнику с выхода сигнала на ретракты - тоже будет работать
А сервы любые?
Про глюк не знал!
соберу все, и проверю.
А вообще, идея не нова. Уже позже нашел в сети еще несколько вариантов, втч и на этом форуме.
Sonar is susceptible to “noise” from a variety of sources and several “fixes” may be required to achieve adequate performance.
Electrical noise caused by ESCs, Servos, or switching BEC’s on the same circuit as the Sonar.
The RC filter and use of shielded cable as described above are usually sufficient.
EMF radiation from motors, motor wires, ESC’s or Xbee.
Sonar is especially susceptible to AC EMF noise generated by the ESCs and ESC to motor wiring.
This can be greatly reduced by wrapping the nearby ESCs and their motor wiring in aluminum (gutter) tape.
Acoustic noise from propellers, prop wash and turbulence.
It is very important to keep the Sonar out of direct prop wash or turbulence.
Balancing propellers (and motors) can help.
Mounting the sonar sensor inside a small can or tube thinly lined with foam can greatly reduce unwanted exterior acoustic noise.
Wrap Sonar module board and components in rubber or foam tape to reduce transferred acoustic noise.
Vibration from motors, props, etc.
Sonar is very subject to frame transmitted vibration.
Mounting the Sonar module on double sided foam or Gel tape will pretty much eliminate this noise source.
The MB 1240 series is the only Sonar considered suitable for multicopter use by the manufacturer – Maxbotix.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"4cb093dd3df955007775b8ac":{"_id":"4cb093dd3df955007775b8ac","hid":72964,"name":"shura2000","nick":"shura2000","avatar_id":null,"css":""},"4e7f14493df955007774df10":{"_id":"4e7f14493df955007774df10","hid":100377,"name":"Compage","nick":"Compage","avatar_id":null,"css":""},"523584f03df9550077732224":{"_id":"523584f03df9550077732224","hid":174358,"name":"c3c","nick":"c3c","avatar_id":null,"css":""},"526276cf3df9550077730fc0":{"_id":"526276cf3df9550077730fc0","hid":179522,"name":"Hyperion","nick":"Hyperion","avatar_id":null,"css":""},"52b3db693df955007772e8b0":{"_id":"52b3db693df955007772e8b0","hid":190882,"name":"starfair","nick":"starfair","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"54c29c54997073007711166a","hid":19867,"title":"Независимые автоматические складные ноги для коптера - от идеи к рабочему прототипу","html":"<p>Сделал рабочий прототип в макетном исполнении.<br>\nВсе работает так, как и задумывалось.<br>\nОсталось теперь водрузить это на коптер.<br>\nВ итоговом варианте будет стоять ардуина мини и сонар HC-SR04. места не занимает, весит ничего.</p>\n<div class=\"ez-player ez-domain-youtube_com ez-block\" data-placeholder=\"<iframe class="ez-player-frame" src="https://www.youtube.com/embed/a1NpqCihat4?feature=oembed&amp;autoplay=1" allowfullscreen></iframe>\" data-nd-link-orig=\"http://www.youtube.com/watch?v=a1NpqCihat4\" data-nd-link-type=\"linkify\">\n <div class=\"ez-player-container\" style=\"padding-bottom: 56.5%;\">\n <a class=\"ez-player-placeholder\" target=\"_blank\" href=\"http://www.youtube.com/watch?v=a1NpqCihat4\" rel=\"nofollow\">\n <div class=\"ez-player-picture\" style=\"background-image: url('https://i.ytimg.com/vi/a1NpqCihat4/hqdefault.jpg');\"></div>\n \n <div class=\"ez-player-header\">\n <div class=\"ez-player-title\">\n DJI Inspire-style automatic landing gear prototype\n </div>\n </div>\n \n <div class=\"ez-player-button\"></div>\n <div class=\"ez-player-logo\"></div>\n \n </a>\n </div>\n</div>\n<p>Вот весь скетч, полностью допиленная и рабочая версия.<br>\nКонечно, он не совершенен, можно сделать его более оптимальным, прикрутить бародатчик итд - но я этого не умею.<br>\n(как свернуть не знаю)</p>\n<!--cut-->\n<pre class=\"hljs\"><code>\n#include "Servo.h" //библеотека серво\nServo myservo;\nconst int Trig = 8; //подключаем вход Триггер сонара к 8 цифровому пину ардуины\nconst int Echo = 9; //подключаем выход Эхо сонара к 9 цифровому пину ардуины\nconst int ledPin = 13; // 13 – если будете использовать встроенный в Arduino светодиод\n\n\nvoid setup()\n{\nmyservo.attach(10); // Servo присоединен к 10 выводу\nmyservo.writeMicroseconds(700); // устанавливаем ноги в положиние для старта при подачи питания, если они уже в нем не стоят\ndelay(5000); //ждем 5 с после подачи питания(все равно, пока инициализируются гиры, компас жпс итд.)\npinMode(Trig, OUTPUT);\npinMode(Echo, INPUT);\npinMode(ledPin, OUTPUT);\n Serial.begin(9600);\n\n}\n\nunsigned int time_us=0;\n\nunsigned int distance_sm=0;\n\nvoid loop()\n{\n\n\ndigitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера\ndelayMicroseconds(10); // Удерживаем 10 микросекунд\ndigitalWrite(Trig, LOW); // Затем убираем\ntime_us=pulseIn(Echo, HIGH); // Замеряем длину импульса\ndistance_sm=time_us/58; // Пересчитываем в сантиметры\nSerial.println(distance_sm); // Выводим на порт для проверки сонара и расстояния\n\nif (distance_sm<200) // Если расстояние до земли менее 200 сантиметром(расстояние можно менять в пределах характеристик сонара HC-SR04 )\n{\n digitalWrite(ledPin, 1);\n\nmyservo.writeMicroseconds(700); // то складываем ноги\n delay(500); // ждем 0,5с для защиты от дребезга и ложных сработок\n}\nelse\n{\n digitalWrite(ledPin, 0);\n myservo.writeMicroseconds(2300); //если меньше 200 см, то раскладываем для посадки\n delay(500);\n}\n\ndelay(100);\n\n}\n</code></pre>\n","user":"4e7f14493df955007774df10","ts":"2015-01-23T19:09:08.000Z","st":1,"cache":{"comment_count":10,"last_comment":"54c64b90997073007712f9d3","last_comment_hid":10,"last_ts":"2015-01-26T14:13:36.000Z","last_user":"4e7f14493df955007774df10"},"views":1488,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}