Покажи участието

От тук може да видиш всички публикации на този потребител.


Публикации - mivr

Страници: 1 [2] 3 4 ... 8
16
Общ форум / Драйвер за 2 мотора с ИР2104 и мосфети
« -: Септември 03, 2013, 05:29:36 pm »
Проблемът е във схемата просто я остави за известно време занимавай се с друго и после я провери отново някоя от връзките не е в изправност или не съществува.

17
Общ форум / Драйвер за 2 мотора с ИР2104 и мосфети
« -: Септември 02, 2013, 12:40:33 pm »
Така ако сложиш две батерии в паралел без те да са идеално изравнени по напрежение ще получиш много мощни изравняващи токове които най-често унищожават батериите. Заради това различни батерии а и еднакви е най-добре да се свързват последователно.

И 4*1.2 = 4.8 +7.4 = 12.2 волта което е достатъчно за драйверите.

Относно надутата батерия може и да успееш да извадиш още един-два разряда от нея но има голям шанс да се взриви по време на експлоатация и да повреди робота. Не препоръчвам да я ползваш дори ако се зареди успешно.

18
Общ форум / Драйвер за 2 мотора с ИР2104 и мосфети
« -: Септември 01, 2013, 10:24:14 pm »
Относно батериите, трябват ти поне 10 волта за да могат да работят драйверите. Можеш да свържеш пакет от 4 батерии АА последователно на оцелялата ли-по, но трябва да внимаваш извънредно много понеже най-вероятно ли-по батерията ще падне пъти по-бързо от 4-те АА, за да е в безопасност батерията проверявай напрежението на батерията на всяко пускане. И имай в предвид че токът ще е ограничен и роботът няма да може да развие пълната мощност на двигателите, но това не е голям  проблем на фона на предполагаемото скапване на батерията така че внимавай с напрежението на ли-по батерията!

Това разбира се е в случай че нямаш 2-ра ли-по батерия под ръка.

Поздрави и внимавай

19
Да, атмега328п е микроконтролер което значи че не е само процесор но за по-кратък изказ и по лесно разбиране използвам думата "процесор" вместо "микроконтролер".

Щом не приема команди от UART най-вероятно е да си повредил модулът в микроконтролера. Можеш да си поръчаш процесор с буутлоадер от роботев или ерелемнт или празен от http://www.tme.eu/bg/katalog/ 8 евра доставка но пък на цена от ~5 лева
http://bg.farnell.com/ 5% към цената за доставката и ДДС, поръчка през http://comet.bg/

Успех и внимавай с аналоговата техника често води до загуби на компоненти. :)

20
Здравей,

проблемът ми е известен, и най-често се причинява от отрицателно напрежение на някой от портовете на процесора. За да направиш така че да работи (в случай че хардуерът не е повреден до степен на неизползваемост) качи нормалният буутлоадер на Ардуино през Atmel студио от "Device Programing (Ctrl+Shift+P)" и след това пробвай нормално качване от средата на Ардуино ако не стане най-вероятно серийната комуникация на процесора е изгоряла. (нов процесор) За в бъдеще бъди по внимателен при използването на аналогова електроника с Ардуино платката. За жалост тя няма защити и се чупи много лесно от обратни напрежения, лично аз имам над 10 процесора счупени по този начин :), така че ако работи добре, ако не, поздравления навлизаш в правенето на прототипи. :)

П.П.
Буутлоадера е в папка:
...\Arduino\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex

21
Успех и само не се отказвай останалото ще дойде с времето си....

22
Krasimir е на правилният път трябва ти постоянно проверяващ код с др. думи без нито един delay а само с проверки колко време е минало спрямо последната проверка на времето. Мигането без delay е точният пример за този вид програмиране и така трябва да изглежда кодът ти със съответните статуси за твоя случай (много рядък случай) ти трябват над 20 статуса, но да това е подходът и няма как да стане без този подход.

С цел да разбереш по-лесно нещата ще ти го обясня така:

Искам да светвам лапата в коридора в SOS сигнал записвам си в колко часа започвам със светнато състояние.
Вместо да броя 1 сек (delay) си гледам часовника като мине една секунда според часовника изгасям и така нататък.

Идеята е че ако искам да свърша нещо друго между светването и изгасването или да прекратя цялата процедура аз ще мога да го направя защото не съм зает да броя секундите, а чакам точен час.

Без този принцип на работя няма как да направиш система която работи с повече от една логическа верига. По-лесно казано ако само светваш броиш гасиш няма как да направиш повече понеже постоянно имаш работа (или светваш или броиш или гасиш) за това си взимаш часовник и като дойде времето да гасиш гасиш а преди това може да правиш каквото искаш.

Надявам се да е станало по-ясно.
За начало започни с нещо по-лесно. (например два бутона които контролират два светодиода да светят по време на натискането на бутона и секунда след).

П.П.
Относно времето за езика максимум седмица за схващане на основните команди и придобиване на опит с тях. За схващане на логиката нужна за направата на системи с повече от едно действие едновременно е много специфично виждал съм хора на по 50-60 които са се опитвали да разберат логиката, но все още гледат на това като на ядрена физика и такива които на 9 разбират и могат да сътворят нещо. Точно време няма когато го разбереш тогава най-важното е да не спираш да опитваш, защото изходите от ситуацията са два отказваш се или успяваш да усвоиш знанието, ако не се отказваш остава само един вариант. :)

23
Така проблемът не е в чипа, езикът или платката а във начинът на писане. За да постигнеш търсеният ефект има два известни ми начина:

Подход 1 ("проверяващ код"):

Код с проверки и статуси: Във кодът трябва да имаш статуси на контролера които сочат къде е във алгоритъмът примерни статуси за твоя
случай биха били:

За удобство променям Ba на бутон 1 и Bb  на бутон 2

1. Чакаме натискане на бутон 1
2. Бутон 1 е натиснат, светодиодът свети и чакаме натискане на бутон 2
3. Бутон 1 и 2 са натиснати и изчакваме стадий от SOS сигналът*

*SOS сигналът разбиваме на поредни статуси свети не свети със съответната продължителност:

1. Свети 200ms
2. Не свети 200ms
3. Свети 200ms
4. Не свети 200ms
5. Свети 200ms
6. Не свети 500ms

7. Свети 500ms
8. Не свети 500ms
9. Свети 500ms
10. Не свети 500ms
11. Свети 500ms
12. Не свети 500ms

13. Свети 200ms
14. Не свети 200ms
15. Свети 200ms
16. Не свети 200ms
17. Свети 200ms
18. Не свети 200ms

когато чакаме съответен стадий съхраняваме една променлива която пази на коя милисекунда от работата на процесора сме променили статуса за последно, когато разликата между времето за работа на процесора и записаната променлива стане повече или равно на предвиденото време за този стадий минаваме на следващият. Разбира се преди каквито и да е проверки на времена отчитаме дали изобщо сме в стадий 3 от първата таблица.
Този подход е най-често използваният в роботиката като цяло понеже позволява множество процеси едновременно (това което ти трябва в момента)

Подход 2 ("прекъсващ код"):

Този вид код се основава върху идеята: случва се нещо на което процесорът трябва да реагира, процесорът бива събуден (по принцип спящ през цялото време) след събуждането процесорът изпълнява предварително зададени инструкции и заспива отново в очакване на следващото събуждане.

Примерен алгоритъм:

Прекъсване при натискане на бутон 1 -> процесорът светва светодиода
Прекъсване при отпускане на бутон 1 -> процесорът загася светодиодът
Прекъсване при натискане на бутон 2 -> процесорът започва код за SOS (твърде дълго обяснение за да го включа тук погледни по долу).
Прекъсване при отпускане на бутон 2 -> процесорът прекратява кодът за SOS

Код за SOS базиран на прекъсвания:
1. Дефиниране на статуси и запис на сегашният статус (погледни по горе там е списъкът със статуси)

Действия според статуси:
1. начален статус светваме светодиодът и настройваме вътрешен брояч да предизвиква прекъсвания на 200ms и записваме че след събуждането ще сме на 2-ри статус, заспиваме
2. изгасяме светодиодът и продължаваме към 3-ти статус по горният начин
3. същото...
4. -||-
5. -||-
6. променяме състоянието на диода и нагласяме брояча на 500ms

продължаваме по описаният алгоритъм със останалата част от SOS кодът.



Този вид писане е най-правилният за работа на вградени системи каквито са роботи, миялни, перални, кухненски роботи и т.н. Така написан кодът ще е най-бързо и правилно работещ, разбира се и много по разбираем от кодът с прекъсваня. Но изисква познаване на прекъсванията и броячите вградени в процесора, което се счита за знание за напреднали при изграждането на прототипи с Ардуино.

П.П.

Това е кратко описание на нужната ти програма ако имаш интерес ще ти помогна с частите от обяснението които не разбираш. Надявам се съм помогнал.

24
За жалост няма как да помогна, за да се даде реална стойност трябва да се вземат под предвид много фактори. За това просто тествай :), ако с дадена редукция не достига скоростта намали редукционното число или повиши напрежението.

25
Относно драйверът има няколко възможности проблеми във връзките, захранващо напрежение под 10 волта или изгорял драйвер.

Първо провери напрежението на батериите после основно схемата търсиш слаба или липсваща връзка ако това не помогне пробвай да смениш драйверът с другия наличен.

Относно сензорите за да получиш добра резолюция се налага да тестваш на даденото разстояние и нагласянето на резисторите става с два потенциометъра. Препоръчвам ти да настроиш един резисторите спрямо един сензор и после да пренесеш стойностите.

26
За момента не е добра идея да се опитваш да разучаваш ПИД поради простата причина че няма значение за теб какво има в ПИД стига да ти върши работа, ако мого държиш на теорията, ами тя се изучава в 3 курс: теория на управлението (ако не греша за името) там е обяснен цялостния принцип на ПИД. За жалост не съм 3 курс и си нямам и на представа какво точно се случва в ПИД след като поддам данните, освен че получавам едно магическо число на изходът. :D

27
До колкото си спомням ти препоръчаш да използваш едни сиви подобни на тези кондензатори...

И да този вид кондензатори са по-добри от малките жълти понеже могат да се зареждат/разреждат по бързо от жълтите и следователно за ШИМ от ардуино които е на 34 или на 65 Khz тези кондензатори са правилният избор.

28
Да.

29
Пул уп резистор е схема за свързване на обикновен резистор използва се когато кракът не е нито в 0 нито в 5 волта, но очакваме 0 волта и трябва да засечем кога те са на даденият крак. Тогава слагаме резистор с голяма стойност между кракът и 5 волта така когато дойде ниското напрежение то не се влияе от този резистор и можем да го засечем.

Относно RM2 тези двигатели имат ток на запъване 5 ампера и съответно пикове до 5 или повече ампера при пикове в натоварването, за това мостът е изграден с транзистори с 8 мили ома вътрешно съпротивление.
Така загубите, при пълно натоварване на RM2, ще са 0.8 вата (Джаул-Ленц) и следователно температурата на корпусът на транзисторът се очаква да е около 70 градуса по Целзий. Другата причина да препоръчам такива транзистори на новобранци е че няма как да ги унищожат :D, дори да окъсят батериите на робота през тях, няма да могат да взривят транзистора.

30
Здравей,

Сега имах възможността да погледна форума...
Относно пушещите кабели това значи или късо или по някаква причина не сработване на драйверът (тъй като транзисторите са свръх мощни най-слабото звено във веригата стават батериите и кабелите тоест съпротивлението на транзисторите е най-малкото във веригата съответно късо през тях е опасно за всичко останало но не и за тях) провери много добре захранването на драйверът преди да пробваш пак въпреки че веднъж е проработило това не дава гаранция че ще работи и втори път, или когато ти се наложи да го пренасяш.

Относно скоростта грешката е моя връзката е праволинейна-255 е макс а 0 си е 0.

И за финал да попитам кога е следващата доркбот среща?

Поздрави

Страници: 1 [2] 3 4 ... 8