Проблемы с питанием
- Войдите на сайт для отправки комментариев
Вс, 29/06/2014 - 22:50
К моей Mega 2560 подключен Motor Shield на 4 dc мотора и 2 серво мотора. Шилд и 2560 питаються от раздельных источников (на мотор шилде снят джампер). Проблема заключаеться в том, что моторчики крутятся очень медленно или вообще не крутяться. Моторчикам можно задавать скорость от 0 до 255, крутиться они начинают где то после 180, причём не все, некоторым надо дать толчок, только тогда они начинают крутиться.
Моторчики заказывал по интернету, в описании было написанно:
Model Number: TT Motor
Operating voltage: DC 3V-12V
Maximum torque: 800gf cm min (when it is 3V)
No-load speed: 1:48 (when it is 3V)
Load current: 70mA (250mA MAX) (when it is 3V)
Я пробовал запитать мотор шилд по разному, 4.5В, 6В, 9В. В случае 4.5В и 6В моторчики крутятся как описанно выше ( при выставлении скорости 180) и крутяться очень медленно. В случае 9В моторчики вообще не крутяться и плата "пищит". Когда я пробовал подключить напрямую 1 моторчик к 9В кроне, происходило примерно такое: моторчик сделает 2-3 оборота и прекращаеться вращаться далее все попытки раскрутить его тщетны. Потом, на следующий день, я опять попробовал подключить напрямую, и тоже самое 2-3 оборота и всё.
Пожалуйсто, обьясните что я делаю не так и как следует это сделать.
П.С. У меня нету аппаратуры что бы замерить напряжение на моторчиках
Какой шилд - неведомо, как подключали - неведомо, какие моторы - неведомо, каким скетчем крутили - неведомо
Аппаратра для замерения напряжение на моторах называется "мультиметр". В народе "тестер". Есть в любом радио-магазине. Частенько в электро-товарах и крупных строительных попадаются. Даже на раскладках где батарейки продают и то попадаются. Стоят от $6
Заниматься чем-то электронным, без приобретения подобного практически не возможно.
P.S. слово "неведомо", как правило означает "и где ссылка?". Моторов, шилдов и т.п. - с такими названиями, чуть больше чем дофига. Не нужно ждать телепатов. Они на форумах, как правило, в большом дефиците.
Какой шилд - неведомо
L293D
как подключали - неведомо
у моторчика есть 2 контакта, 1 контакт в M1_A, второй в M1_B
какие моторы - неведомо
каким скетчем крутили - неведомо
Я почему бы ссылку на шилд не дать? Это какая-то тайна? Такое впечатление что вам вообще решение проблемы не нужно.
В скетче проблем нету,
А если найду?
проблема в аппаратной части
Ну так проверяйте это. Звоните тестером дороги, меряйте напряжение, подключайте мотор напрямую к power... Или вы думаете что кто-то телепатически сможет вам сказать какая у вас дорожка оборвана?
Если у вас не крутится моторчик от источника питания напрямую, значит
1. Либо это не DC мотор.
2. Либо он дохлый
3. Либо у вас негодный источник питания.
И честно говоря я не очень понимаю, что вы ждете от форума. Чем он может помочь в этих случаях. Разве что первый пункт "это не DC мотор". Но учитывая скудность инфы и не желание делится ссылками, даже в "опознании" никто вам не поможет.
Или вы ждете что кто-то вам скажет "возьми нормальный блок питания и поробуй с ним", или "попробуй с другим мотором"?
Крона слаботочная батарейка.
При пуске движков постоянного тока, бросок тока может достигать до 2,5 от номинального тока.
Если пуск идет с хорошей нагрузкой на валу, то возможно и больше.
Возможно крона выдать столько не может.
Если пользоваться ШИМом, на движки надо подвать максимальное напряжение, на которое они расчитаны.
Иначе будет фигня. Подашь 5В вместо 12-ти, ШИМ уменьшит среднее значение еще на сколько то.
В результате мотор будет пускаться рывком, со значением ШИМ больше сотни и крутящий момент на валу будет маленький.
Раз уж речь зашла о питании, хочу рассказать про одну засаду, в которую попадают пратически все, но никто про нее не пишет.
Дело в том, что коллекторные движки на постоянных магнитах дают сильные помехи в питающую цепь, особенно при пуске и когда управляются через ШИМ.
Это вызывает разнообразные глюки, начиная от самопроизвольного дёргания сервоприводов и моторов, до глюков датчиков и самопроизвольной перезагрузки Ардуино.
Как основной метод борьбы предлагают разделить источники питания Ардуино и исполнительных механизмов или питать от одного источника с использованием двух независимых преобразователей со встроенными фильтрами.Но таким образом проблема решается не до конца.
Земелька то у нас общая, иначе управлять с помощью мотор шилда не получится.
А на мотор шилдах нет гальванической развязки между цепями питания и цепями управления (за все не поручусь, проверял только L298 и HG не помню маркировку).
Поэтому Ардуино также ловит все помехи от моторов, только в меньшей степени.
Чтобы решить проблему окончательно, в цепях управления нужно делать гальваническую развязку, проще всего ее сделать на оптронных реле. На Ибее они по рублю за ведро, да и в нашей раше одно оптронное реле стоит рублей 15-20.
Пересмотрел туеву хучу проектов на Ардуино и узрел всего лишь один проект, в котором гальваническая развязка по цепям управления была предусмотрена.
Еще одна проблема.
Это опорное напряжение для датчиков, которое все берут с Ардуино.
Особенно умиляет код, где рассчитывают цену деления, ака 5/1024*"измеренное значение на аналоговом выходе".
В первых ровно 5 вольт ни на одной Ардуине не найдешь.
У меня их несклько, 3 уно, 2 нано и одна мини.
Ни на одной нет пяти вольт на выходе питания и на логике.
На всех напруга от 4,76 до 4,89В
И она стабильно такая при запитывании от любого источника. Я пробовал от лабораторного блока питания, давал 6-15В.
К тому же напруга может слегка плавать при просадках на источнике питания. Стабилизатор на Ардуине простенький, он не является источником напряжения. Для рядовых задач, плавание напруги в пару десятых вольта некритично. Но если заморачиваться высокоточными измерениями, нужно брать источник напряжения в 5В (на Ибее 1,5-2,5 бакса) и подтыкать его к пину AREF, предварительно сконфигурировав Ардуину. Датчики запитать нужно от этого же источника.
Для остальных задач не писать в тупо в скетче 5, а замерить точное напряжение, выдаваемое Ардуиной.
Хотя что можно замерить китайским мультиметром, у которого точность +/- километр.
Во вторых диапазон значений на аналоговом входе 0-1023, а не 1-1024. Делить нужно на 1023, а не на 1024.
Не верите, +5В с пина Ардуино на пин А3 и Serial.println(analogRead(3));
Затем землю на пин А3 и повторить упражнение.
Во вторых диапазон значений на аналоговом входе 0-1023, а не 1-1024.
ЭТО ОДНО И ТОЖЕ ! ...только точка отсчёта смещена
вход - 0 ... 5 V
а вот уж выход АЦП - 0 V - 0
5 V - 1023
Делить нужно на 1023, а не на 1024.
это всё равно что в десятичной системе выделять разряды - делить на 9 !!!!!!!!!!!! , а не на 10 !
всегда делится на основание системы счисления в степени N !
10 , 100 , ... , ... , 100000
2 , 4, ...... 64 , 128 , ..... , 512 , 1024
Не верите, +5В с пина Ардуино на пин А3 и Serial.println(analogRead(3));
Затем землю на пин А3 и повторить упражнение.
возьмите-сделайте АЦП на хотя бы разрядов не 10 , а 12 .... 16 - и проверьте ( с округлениями ) !
Во вторых диапазон значений на аналоговом входе 0-1023, а не 1-1024.
ЭТО ОДНО И ТОЖЕ ! ...только точка отсчёта смещена
вход - 0 ... 5 V
а вот уж выход АЦП - 0 V - 0
5 V - 1023
конечно же при условии идеальных условий - питание +/- 0, 000000000000000000000001 V и работа АЦП - теоритическая
Блин, а при чем тут система исчисления?
Смотрим даташит на камень. В котором черным по белому написано "10-bit ADC"
Теперь вопрос на засыпку: какое максимальное число можно закодировать 10-тью битами?
1023 или ( маска B 00 0000 0000 ) B 11 1111 1111
при том ! какое максимальное число можно закодировать 3-мя битами, если использовать 21-тиоднуричную систему счисления ?
хорошо...
для камня система 2, 10 знакомест, количество отсчётов = 2^10 = 1024, НО максЧисло = 2^10-1
Блин, а при чем тут система исчисления?
....чёбы правильно масштабировать-делить НЕ на 1023 ( или 9 ) , а на 1024 ( или 10 )
> максЧисло = 2^10-1
Вот. О чем и речь. То есть 10-ти битность автоматом означает макс число 1023.
Значит пропорция у нас выглядит так:
1023 <--> VCC
rawValue <--> v (вольты)
Отсюда v=rawValue*VCC/1023;
То есть, делить, в итоге нужно именно на 1023.
И логика "всегда делится на основание системы счисления в степени N !" - тут никаким боком.
Если, все-таки, считаете делить нужно именно на "N!", то ест на 1024. то покажите на примере.
Предположим у нас идеальный ADC. VCC равно ровно 5v.
Теперь, как с помощью деления на 1024 получить искомые 5v из 10-ти битного значения?
Как у вас тут от питания на моторчики и сразу к логике. . Может лучшие опять про питание? Обед же. Я вот уже занял столик в ресторане.
> Теперь, как с помощью деления на 1024 получить искомые 5v из 10-ти битного значения?
зачем делить-то ? зачем искать-то ? АЦП выдал 1023 ? вот вам и 5 V !
5 V - на 1024 дискреты....
шаг = 5 / 1024 = 0,0048828125mV
0 - 0V
1 - 0,0048828125mV
10 - 0,048828125mV
100 - 0,48828125mV
......
1023 - 4,9951171875mV
уж извините, что при обратном пересчёте не получилось 5 V ! и при 1000-разрядном АЦП - НЕ ПОЛУЧИТСЯ !
как пересчитать 37,65 часа в сутки ?
37,65 / 24 = ....... ?
или
37,65 / 23 = ....... ?
приятного.... :)
Если, все-таки, считаете делить нужно именно на "N!", то ест на 1024. то покажите на примере.
Предположим у нас идеальный ADC. VCC равно ровно 5v.
Теперь, как с помощью деления на 1024 получить искомые 5v из 10-ти битного значения?
учтите ошибку дискретизации....
АЦП 16 .... 24-разрядный покажет Вам эту ошибку....
...чуть выше я расписал эту магию
Pi - точно не вычислить из вписанных N-угольников..... хоть 1024 вписанный угольник.... хоть 4096
....ошибка будет всегда !
блиииииииииииииин.......
1549 кг перевести в тонны..... мы же не делим 1549 кг на 999..... а делим на 10^3 !!!!!!!!!!!!!!!!!!!
крайние два пЫЫЫва - были лишние.... :(
val = map(val, 0, 1023, 0, 255);
с учётом ошибки дискретизации это будет то же самое, что и
val = map(val, 1, 1024, 1, 256);
!!!!!!!!!!!!!!!!!!
1023 - 4,9951171875mV
уж извините, что при обратном пересчёте не получилось 5 V !
Не извиню. Школа. Пропорция.
Теперь считаем по формуле
v=rawValue*VCC/1023;
rawValue у нас 1023 - то что вернул analogRead. Хватаем ему точности что-би при VCC вернуть максимальное значение. VCC=5v. Подсталяем:
v=1023*5/1023=5. Ровно. Именно при делении на 1023. И не требуется придумывать отмазки про 1000-разрядные АЦП и проч. мдень.
Имеем обычную линейную фунцию. f(x)=k*x. Где к равно 5/1023. И, как вшколе, подставляем значения для проверки - граничные точки. И линия проходит точно через точки. А не как у вас "где-то рядышком".
И погрешность "перевода" из "попугаев" в вольты имеем только в неумении контроллера работать с простыми дробями.
Поэтому шаг у нас, все-таки. 5/1023=0,0048875855327468 . И, кстати, вольт, а не mV. Если мы вольты делили на скаляр, то получили вольты.
Умножив, на том же виндовом калькулятор 0,0048875855327468*1023 (прочитанное из analogRead) получим 4,999999999999976, что в любом случае как-бы ближе к 5v чем, к ваше 4,9951171875 . Так слегка на пару порядков точнее.
И это, опять-таки ошибка возникшая именно из-за погрешности вычислений с плавающей точкой. А нет от разрядности АЦП или ошибок в формулах. В символьных вычислениях - ее вообще не будет. И повышать точность можно до опупения. Просто взяв какие-нибудь либы которые умеют хранить double скажем в 64 байтах и оперировать с ними.
Ну или, если все еще не убидились. Зайдите с другого конца.
Задача: есть линейная функция. Которая переводит raw в вольты.
Раз линейная, значит вид у нее y(x)=k*x+b;
Известно, что функция проходит через две точки (0;0) и (5;1023);
Дано, найти коэфиценты этой функции. Чему равны k и b? Помним, из школы, как найти уравнение прямой проходящей через две известные точки? Система из двух линейных уравнений.
10-ричное число в 2-ичное - делим его на 2^1 ( но не на 1 )
10-ричное число в 3-ичное - делим его на 3^1 ( но не на 2 )
10-ричное число в 5-ичное - делим его на 5^1 ( но не на 4 )
ближе к компутерам....
10-ричное число в 8-ичное - делим его на 8^1 ( но не на 7 )
10-ричное число в 16-ичное - делим его на 16^1 ( но не на 15 )
моя уже иссяк-сдулся.....
Раз линейная, значит вид у нее y(x)=k*x+b;
НЕ значит !!!!!!! линейную зависимость может дать, может быть, 4096-разрядный АЦП....
про mV - пардона прошу....
из двух спорящих : один дурак, второй сволочь ! не хочЮ быть ни одним из них....
...как быть с переводом м в км, гр в кг, тонны в миллиграммы ? применять коэффициенты 9 , 99 , 999, 0,9 , 099 ?
Задача: есть линейная функция. Которая переводит raw в вольты.
Раз линейная, значит вид у нее y(x)=k*x+b;
Известно, что функция проходит через две точки (0;0) и (5;1023);
Дано, найти коэфиценты этой функции. Чему равны k и b? Помним, из школы, как найти уравнение прямой проходящей через две известные точки? Система из двух линейных уравнений.
линейная НА ВХОДЕ !!!!!!!
на выходе СТУПЕНЧАТАЯ !
и все расчёты по формуле через коэффициенты наклона и точки смещения - НЕ ДЕЙСТВИТЕЛЬНЫ !
Раз линейная, значит вид у нее y(x)=k*x+b;
НЕ значит !!!!!!! линейную зависимость может дать, может быть, 4096-разрядный АЦП....
1. Где вам тут вообще привидились системы исчисления? Если я скажем напишу уравнение x*x+b+c=b*b. В какой системи исчислений я написал это уравнение?
2. Каким боком разрядность АЦП к вычисленям и коэфициентам? Мы получили от него число. Все. Дальше нам нужно ПРАВИЛЬНО его перевести из одних ЕДЕНИЦ ИЗМЕРЕНИЙ в другие. Едениц измерений, а систем исчислений.
3. Как так выходит, что ваш "правильный коэфициент", дает точность на 11 порядков(!) хуже, чем "неправильный" 1023?
Ладно. Давайте предположим, что "шаг = 5 / 1024". Ok. Давайте посчитаем в простых дробях. Что-бы погрешность вычислений исключить. (5/1024)*1023<>5
Блин. Опять не равно. А погрешность операций с дробными числами, мы уже исключили... как же так?
Ладно. Возможно вам десяти-битногсть и близкость к "программерскому числу" 1024. мозги путает
Представте что нам попался вообще плохонький АЦП. Вообще двух битный.
Составте для него шкалу, сколько в вольтах означает каждое его raw значение?
проанализирую в ближайшее время на чо делить - на 1024 или на 1023 ? скорее всего результат будет = +/- ошибка дискретизации.... т.е. - спор тока за практику.... А ЕСЛИ практика не выходит за рамки теории.....
....то теория - ВЫШЕ и точнее :)
Раз линейная, значит вид у нее y(x)=k*x+b;
НЕ значит !!!!!!! линейную зависимость может дать, может быть, 4096-разрядный АЦП....
1. Где вам тут вообще привидились системы исчисления? Если я скажем напишу уравнение x*x+b+c=b*b. В какой системи исчислений я написал это уравнение?
2. Каким боком разрядность АЦП к вычисленям и коэфициентам? Мы получили от него число. Все. Дальше нам нужно ПРАВИЛЬНО его перевести из одних ЕДЕНИЦ ИЗМЕРЕНИЙ в другие. Едениц измерений, а систем исчислений.
3. Как так выходит, что ваш "правильный коэфициент", дает точность на 11 порядков(!) хуже, чем "неправильный" 1023?
Ладно. Давайте предположим, что "шаг = 5 / 1024". Ok. Давайте посчитаем в простых дробях. Что-бы погрешность вычислений исключить. (5/1024)*1023<>5
Блин. Опять не равно. А погрешность операций с дробными числами, мы уже исключили... как же так?
Ладно. Возможно вам десяти-битногсть и близкость к "программерскому числу" 1024. мозги путает
Представте что нам попался вообще плохонький АЦП. Вообще двух битный.
Составте для него шкалу, сколько в вольтах означает каждое его raw значение?
0 - < 1,25 V
1 - >=1,25 V и < 2,50 V
2 - >=2,50 V и < 3,75 V
3 - >=3,75 V и < 5,00 V
из двух спорящих : один дурак, второй сволочь ! не хочЮ быть ни одним из них....
...как быть с переводом м в км, гр в кг, тонны в миллиграммы ? применять коэффициенты 9 , 99 , 999, 0,9 , 099 ?
Очень просто быть. Точно так же. Только примените не свою, а мою логику.
Например через пропорции.
Дано:
1000 кг <---> 1 т.
x кг. <---> y т.
Осюда:
перевод тонны в килограмы x=y*1000/1
перевод килограм в тонны y=x*1/1000
Все. И формулы будут работать хоть в десятичной системи есчисления, хоть в троичной.
Причем форумулы те же самые, что я использовал для вычисления вольтов.
И через систему линейных уравнений будет то же самое. И через уравнение прямой - тоже самой.
>из двух спорящих : один дурак, второй сволочь ! не хочЮ быть ни одним из них....
Поздняк метатся. Уже.
Я тоже. Сволочь :)
так ? согласны ?
Блин, а при чем тут система исчисления?
....чёбы правильно масштабировать-делить НЕ на 1023 ( или 9 ) , а на 1024 ( или 10 )
Так почему же у вас ответ получается неправильный? Почему контролые тесты не проходит?
хорошо !!!!!!!!!!!!!!!
переведите, пожста 1024 байт в килобайты !!!!!!!!!!!!! в нормальные килобайты.....
1024 / 1023 = ???????????????????
Блин, а при чем тут система исчисления?
....чёбы правильно масштабировать-делить НЕ на 1023 ( или 9 ) , а на 1024 ( или 10 )
Так почему же у вас ответ получается неправильный? Почему контролые тесты не проходит?
дык, ошибка дискретизации же !!!!!!!!!!!!!!!!
Представте что нам попался вообще плохонький АЦП. Вообще двух битный.
Составте для него шкалу, сколько в вольтах означает каждое его raw значение?
0 - < 1,25 V
1 - >=1,25 V и < 2,50 V
2 - >=2,50 V и < 3,75 V
3 - >=3,75 V и < 5,00 V
[/quote]
Не, не... не нужно выкручиватся. Раз мы работали с вещественным диапазоном, то в нем и продолжаем. Нефиг нам тут лепить фунции возвращающие числовые промежутки. Давайте на двух-битном АЦП повторяйте свою же логику. Которую вы к 10-ти битному применяли.
Давайте вот это:
5 V - на 1024 дискреты....
шаг = 5 / 1024 = 0,0048828125mV
0 - 0V
1 - 0,0048828125mV
10 - 0,048828125mV
100 - 0,48828125mV
......
1023 - 4,9951171875mV
Повторите в случае 2-х битного. Благо тут поменьше будет шагов...
с учётом этой ошибки - ВСЁ проходит, кроме теорииииииииии
Представте что нам попался вообще плохонький АЦП. Вообще двух битный.
Составте для него шкалу, сколько в вольтах означает каждое его raw значение?
0 - < 1,25 V
1 - >=1,25 V и < 2,50 V
2 - >=2,50 V и < 3,75 V
3 - >=3,75 V и < 5,00 V
Не, не... не нужно выкручиватся. Раз мы работали с вещественным диапазоном, то в нем и продолжаем. Нефиг нам тут лепить фунции возвращающие числовые промежутки. Давайте на двух-битном АЦП повторяйте свою же логику. Которую вы к 10-ти битному применяли.
Давайте вот это:
5 V - на 1024 дискреты....
шаг = 5 / 1024 = 0,0048828125mV
0 - 0V
1 - 0,0048828125mV
10 - 0,048828125mV
100 - 0,48828125mV
......
1023 - 4,9951171875mV
Повторите в случае 2-х битного. Благо тут поменьше будет шагов...
[/quote]
я уже сказал за 2-ву битный АЦП..... точнее - не будет !
могу расписать за 16-ти разрядный АЦП.... к обеду субботы....
АЦП вернёт значение конкретное ! а мы уж должны понимать - в каком диапазоне будет находиться измеряемый параметр !
дык, ошибка дискретизации же !!!!!!!!!!!!!!!!
А у меня куда эта ошибка делась?
И какой дискретизации? Мы переводим конкретной число. А число, в отличие от функции дискретизации не имеет.
OK. Давайте еще с другого конца пойдем.
Некий прибор (не знаем какой, не знаем его точность и т.п.).
Намерял нам некую физическую величину. И выдал значение "48 попугаев". Переведите это значение в "удавы", если известно что "144 попугая равны 3 удавам".
Как перевести 48-попугаев в 3 удава?
АЦП вернёт значение конкретное ! а мы уж должны понимать - в каком диапазоне будет находиться измеряемый параметр !
Не вилять! Для 10-ти битного таблицу составляли без "мы должны понимать". Давайте и тут составляйте аналогичную. По той же логике.
Посмотрим на эти таблички, а потом уже будем "понимать".
Раз вернет "конеретное значение", вот вы это конкртеное и пересчитайте мне в конкретные вольты. Через систему исчислений.
Ваши рассуждения истинны при кратности измеряемой величины и разрядностью АЦП !
дык, ошибка дискретизации же !!!!!!!!!!!!!!!!
А у меня куда эта ошибка делась?
И какой дискретизации? Мы переводим конкретной число. А число, в отличие от функции дискретизации не имеет.
OK. Давайте еще с другого конца пойдем.
Некий прибор (не знаем какой, не знаем его точность и т.п.).
Намерял нам некую физическую величину. И выдал значение "48 попугаев". Переведите это значение в "удавы", если известно что "144 попугая равны 3 удавам".
Как перевести 48-попугаев в 3 удава?
щас переведу ! :)
144 П = 3 У
48 П = Х У
Х = 48 * 3 / 144 = 1,0000000000000000000000000000000000000000000000
неудачный-кратный пример ! :(
щас переведу ! :)
По какой системе исчислений переводить будете?
Где табличка с конретными значениями для двух-битного АЦП?
Ну... давайте я начну даже в вашем стиле...
"Раз двух битный, значит делить нужно на 2^2=4".
Значит шаг, будет 5v/4=1.25v....
Ну, давайте стройте табличку дальше...
153 П = 3 У
48 П = Х У
Х = 48 * 3 / 153 = 0,9412...... ?
и как система с разрешающей способностью 1,00 воспримет это ?
КАК ОДИН удав - +/- ОШИБКА !!!!!!!!!!!!!!!!!!!