подключаем pin “V” OSD на pin A0 AIOPIO
подключаем pin “I” OSD на pin A2 AIOPIO
Настраиваем и выставляем корректное напряжение согласно сообщению Андрея Трубникова.
MultiWii должна быть не ниже версии 2.3 – предыдущие версии работать не будут (без правки).
config.h для измерения тока выглядит так
#define POWERMETER_HARD
#define PSENSORNULL
#define PINT2mA 4 // примечание 1 – см.ниже
Правим прошивку OSD, в которой просто не читается значение текущего тока.
/* как определяется структура analogв MWii2.3, файл types.h - нас интересует amperage
typedef struct {
uint8_t vbat; // battery voltage in 0.1V steps
uint16_t intPowerMeterSum;
uint16_t rssi; // range: [0;1023]
uint16_t amperage;
} analog_t;
*/
Примечание 1.
В файле MultiWii.cpp вводится поправка примерно таким образом: значение силы тока умножается на pint2ma.
Так как у меня сейчас нет возможности проверить с большими токами, а в области малых значений (единиц) поправка слишком грубая, то я в файле MultiWii.cpp заменил эту строку на следующую:
analog.amperage = powerValue * conf.pint2ma / 10;
Результат: цифры «0.0А» в ОСД ожили и стали показывать что-то, похожее на правду.
Просьба: если вы можете проверить с реальными токами – отпишитесь, я дополню/поправлю свой текст.
Comments
Можно подключить сенсор напряжения и тока напрямую к OSD и включить встроенный АЦП - что бы исключить полетный контроллер, но это уже надо подпаиваться к ножкам 328-й, без микроскопа непросто
А почему показания тока на А2? На А1 нельзя оставить?
Как у Андрея Трубникова.
Ага, вот и проблема. У меня то стоит Mahowik 3.1. А он на основе версии 2.2.
Не получается скомпилировать. Ошибку выдает.
Ага, вот и проблема. У меня то стоит Mahowik 3.1. А он на основе версии 2.2.
Не получается скомпилировать. Ошибку выдает.
Если Маховий есть в исходниках - то надо в него добавить ответную часть обработки и выдачи значениия тока - вот подробно расписано, как это сделать (правда, на английском): www.multiwii.com/forum/viewtopic.php?f=8&t=3783
Не получается скомпилировать OSD? А на что ругается?
вывод определяются в config.h -
#define V_BATPIN A0 // Analog PIN 0 - это вольтметр
#define PSENSORPIN A2 // Analog PIN 2 - это амперметр
Не компилируется Mahowik.
OSD скомпилировалось, работает, но цифры ампер скачут 0-25,5.
Не компилируется Mahowik.
OSD скомпилировалось, работает, но цифры ампер скачут 0-25,5.
А можно расспросить подробнее про Маховик? Читал, что это удачно допиленная Александром прошивка Мультивия за 25 у.е., но в каком виде он её отсылает? В исходниках? Если да, то какие изменения Вы внесли в неё? Какие ошибки пишет при компиляции? Что говорит Александр?
Один раз у меня начали прыгать цифры когда я включил “включить встроенный ADC” - АЦП висит в воздухе, вот и наводится неизвестно что. Хотя мне кажется, что дополненная OSD читает 7 байт вместо 5 (последние 2 - значение тока), а Mwii - до доработки - выдает 5 байт, поэтому остальные 2 байта могут быть чем угодно.
Александру вопрос только задал.
Изменения те, что Вы написали в основном сообщении, но этого явно мало. Вашу ссылку на англоязычный форум посмотрел, но в прошивке Mahowik нашел только 2/3. Одно изменение где делать не нашел.
Буду ждать ответа Александра.
Александру вопрос только задал.
Изменения те, что Вы написали в основном сообщении, но этого явно мало. Вашу ссылку на англоязычный форум посмотрел, но в прошивке Mahowik нашел только 2/3. Одно изменение где делать не нашел.
Буду ждать ответа Александра.
yadi.sk/d/dqaeWW3IBXnZv - это скорректированные исходники OSD, которые я скомпилировал и залил себе.
С OSD вопросов нет, проблемы с прошивкой контроллера.
А почему показания тока на А2? На А1 нельзя оставить?
Я пробовал, может где-то ошибка была, не знаю, но у меня не работало. Вернул на А2 и начало работать, правда в попугаях, т.е. порт А1 не измерял напряжение.
Не компилируется Mahowik.
У меня скомпилировалось 3,1 с правкой под ОСД как в вышеуказанном патче, но правильно считать амперы я так и не знаю как. rcopen.com/forum/f123/topic283798/3957
Прочитав все выше описанное, переделал программу KV_Team_dev_r370, скомпилировал и залил. Дальше нужно только настроить показания напряжения и тока чтоб они соответствовали действительности.
С напряжение особых проблем не было, подобрав нужный дифферент все получилось:
#define VBATSCALE 21
Дальше настало время тока. На все догадки и танцы у меня ушло около недели. Самое главное что ни в GUIдля виндовс , ни в GUIдля андройд значения тока ни где не показываются. Показания тока есть только на экране телевизора в OSD!!!
Сначала надо настроить PSENSORNULL510, я пытался ставить разные значения от 1 до 600, но результат был всегда один и тот же, ноль никогда не получался и значение были всегда хаотично разные и при увеличении тока цифры «прыгали» как в большую сторону так и в меньшую.
Потом уже не понимая что делать решил шаманить со строчкой в multiwii (вкладка multiwii.cpp)
analog.amperage = powerValue * conf.pint2ma;
Как было написано в самом начале значение тока не можно, а нужно поделить на 10, вот так
analog.amperage = powerValue * conf.pint2ma / 10
После этого значение тока превратились, в какое подобие нормальных информативных чисел. Далее с помощью PSENSORNULL выставляем значение тока в ноль. Я не стал выставлять его в ноль, а померев амперметром, выставил реальные значения «холостого хода», у меня это было 0,2А, у меня получилось это значение равное 1.
#define PSENSORNULL 1
Дальше с помощью амперметра и OSDна экране стал смотреть отличия реального тока от OSDшного. После нескольких замеров я подобрал нужный делитель в строчке:
analog.amperage = powerValue * conf.pint2ma / 10
иполучилследующее
analog.amperage = powerValue * conf.pint2ma / 236
После этого ток показывал значение с точностью до 0,1А
Теперь остается выставить значение #definePINT2mA и дело сделано. Мое значение:
#definePINT2mA 225.
Удачи в настройке и полетах!!!
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"4bdded493df9550077761617":{"_id":"4bdded493df9550077761617","hid":65366,"name":"crand","nick":"crand","avatar_id":null,"css":""},"4d656ccf3df9550077755a00":{"_id":"4d656ccf3df9550077755a00","hid":81764,"name":"ppzaec","nick":"ppzaec","avatar_id":null,"css":""},"4f8489913df95500777459c6":{"_id":"4f8489913df95500777459c6","hid":117624,"name":"serenya","nick":"serenya","avatar_id":null,"css":""},"520d34633df95500777334e7":{"_id":"520d34633df95500777334e7","hid":169997,"name":"ДенисК","nick":"ДенисК","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":"526823cd997073007710d925","hid":17780,"title":"Как подключить датчик напряжения и тока к Crius AIOP в MultiWii 2.3, что бы отображался ток.","html":"<p>Исходные данные</p>\n<ul>\n<li>полетный контроллер Crius AIOP V2.0 <a href=\"http://www.rctimer.com/product_765.html\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.rctimer.com/product_765.html\" target=\"_blank\" rel=\"nofollow noopener\">www.rctimer.com/product_765.html</a>\n<ul>\n<li>плата расширения AIOPIO Board (Input / Output module) <a href=\"http://www.rctimer.com/product_957.html\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.rctimer.com/product_957.html\" target=\"_blank\" rel=\"nofollow noopener\">www.rctimer.com/product_957.html</a></li>\n<li>датчик напряжения и тока RCTimer Voltage & Current Sensor 50 V 90A <a href=\"http://www.rctimer.com/product_861.html\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.rctimer.com/product_861.html\" target=\"_blank\" rel=\"nofollow noopener\">www.rctimer.com/product_861.html</a></li>\n<li>ОСД RCTimer MAVLink-OSD V1.0 <a href=\"http://www.rctimer.com/product_862.html\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.rctimer.com/product_862.html\" target=\"_blank\" rel=\"nofollow noopener\">www.rctimer.com/product_862.html</a></li>\n</ul>\n</li>\n</ul>\n<p>OSD прошита KV_Team_dev_r370, мозги - MultiWii_dev_2013_10_20_r1591_pre_2.3</p>\n<!--cut-->\n<p>В основу легло сообщение <a href=\"https://rcopen.com/member117624\" class=\"link link-int\" data-nd-link-orig=\"https://rcopen.com/member117624\"><strong data-nd-pair-src=\"**\">serenya</strong></a>, направившего меня на запись <a href=\"https://rcopen.com/member126234\" class=\"link link-int\" data-nd-link-orig=\"https://rcopen.com/member126234\">Angelorsk</a> о подключении датчика к мозгам <a href=\"https://rcopen.com/blogs/83206/16327#comment333\" class=\"link link-int link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://rcopen.com/blogs/83206/16327#comment333\">rcopen.com/blogs/83206/16327#comment333</a> – за что им огромное спасибо.</p>\n<p>подключаем pin “V” OSD на pin A0 AIOPIO<br>\nподключаем pin “I” OSD на pin A2 AIOPIO<br>\nНастраиваем и выставляем корректное напряжение согласно сообщению Андрея Трубникова.<br>\nMultiWii должна быть не ниже версии 2.3 – предыдущие версии работать не будут (без правки).<br>\nconfig.h для измерения тока выглядит так<br>\n#define POWERMETER_HARD<br>\n#define PSENSORNULL<br>\n#define PINT2mA 4 // примечание 1 – см.ниже</p>\n<p>Правим прошивку OSD, в которой просто не читается значение текущего тока.</p>\n<p>OSD\\KV_Team_dev_r370 Добавить строки, выделенные красным:</p>\n<p>Файл <strong data-nd-pair-src=\"**\">GlobalVariables.h</strong><br>\nuint16_t pMeterSum=0;<br>\nuint16_t MwRssi=0;<br>\nuint16_t MwAmperage=0; // Mwii 2.3 - DenK</p>\n<p>файл <strong data-nd-pair-src=\"**\">Serial.ino</strong></p>\n<p>if (cmdMSP==MSP_ANALOG)<br>\n{<br>\nMwVBat=read8();<br>\npMeterSum=read16();<br>\nMwRssi = read16();<br>\nMwAmperage = read16(); // Mwii 2.3 - DenK<br>\n}</p>\n<p>файл <strong data-nd-pair-src=\"**\">Screen.ino</strong> – заменить void displayAmperage(void) на следующий:</p>\n<p>void displayAmperage(void)<br>\n{<br>\n// Real Ampere is ampere / 10<br>\nif (Settings[S_ENABLEADC]) {<br>\nItoaPadded(amperage, screenBuffer, 4, 3); // 99.9 ampere max!<br>\nscreenBuffer[4] = SYM_AMP;<br>\nscreenBuffer[5] = 0;<br>\nMAX7456_WriteString(screenBuffer,getPosition(amperagePosition));<br>\n}<br>\nelse {<br>\nItoaPadded(MwAmperage, screenBuffer, 4, 3); // add Mwii 2.3 - DenK<br>\nscreenBuffer[4] = SYM_AMP;<br>\nscreenBuffer[5] = 0;<br>\nMAX7456_WriteString(screenBuffer,getPosition(amperagePosition));<br>\n}<br>\n}</p>\n<p>/* как определяется структура analogв MWii2.3, файл types.h - нас интересует amperage<br>\ntypedef struct {<br>\nuint8_t vbat; // battery voltage in 0.1V steps<br>\nuint16_t intPowerMeterSum;<br>\nuint16_t rssi; // range: [0;1023]<br>\nuint16_t amperage;<br>\n} analog_t;<br>\n*/</p>\n<p>Примечание 1.<br>\nВ файле MultiWii.cpp вводится поправка примерно таким образом: значение силы тока умножается на pint2ma.<br>\nТак как у меня сейчас нет возможности проверить с большими токами, а в области малых значений (единиц) поправка слишком грубая, то я в файле MultiWii.cpp заменил эту строку на следующую:<br>\nanalog.amperage = powerValue * conf.pint2ma / 10;</p>\n<p>Результат: цифры «0.0А» в ОСД ожили и стали показывать что-то, похожее на правду.<br>\nПросьба: если вы можете проверить с реальными токами – отпишитесь, я дополню/поправлю свой текст.</p>\n","user":"520d34633df95500777334e7","ts":"2013-10-23T19:30:21.000Z","st":1,"cache":{"comment_count":13,"last_comment":"53fc2595997073007713d470","last_comment_hid":13,"last_ts":"2014-08-26T06:13:41.000Z","last_user":"4d656ccf3df9550077755a00"},"views":4821,"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"}