ATmega128 PWM řízení DC motorů

Zdravím, chtěl bych se zeptat, zda je zde někdo schopný naprogramovat PWM pro procesorovou desku ATmega128? Potřebuji odzkoušet robotický podvozek s H-mostem. Jde mi konkrétně o regulaci otáček a směru pomocí PC s využitím sériové linky (robot je vybaven bluetooth modulem).

Ahoj.
Schopnych lidi je tu dost, akorat mozna nenajdes nikoho, kdo by se tim chtel zabyvat od piky.
Myslis ze by pro tebe byl velky problem naprogramovat si to sam?
Pokud uz mas programator, nebo ta deska uz ma SW a programator prilozeny, PWM regulace je tak na 10 radku v C a posilani prikazu tak na 30 radku.
Radi ti pomuzeme poradit s jiz existujicim programem.
Kdyz tak posli schema zapojeni podvozku a pokud mozno i program.
Program na PC je trosku vetsi orisek, ale da se to udelat v Jave, Delphi nebo Visual C.

Pro mě je programování španělská vesnice, dělal jsem mechanickou část toho podvozku + elektroniku a potřebuju něco jen na odzkoušení (je to podvozek do výuky, takže veškeré další věci budou programovat jiní). Nepotřebuju složitý program pro pc, stačí když poběží linka rs232 a v konzoli zadám jen příkaz pro posun jednoho či druhého motoru.

Chápu to prosím správně, že toto téma je míněno jako inzerát, kdo naprogramuje desku za úplatu?

Neni to zadny komercni projekt, opravdu mi jde jen o to, abych mohl predvest, ze ma konstrukce je funkcni. Pokud se nekdo ochotny najde, tak to samozrejme ocenim. Zadarmo dnes neni nic, ale pokud se nikdo nenajde, tak to pres koleno lamat nebudu.

co se týče programu na pc tak pokud ti to ma slouzit pouze pro kontrolu, tak si myslim, ze neni ani nutno nic programovat a staci pouze nějaky terminal. ale jak jiz bylo zmineno, chce to sem hodit alespon schema zapojeni, a pak muzeme pokracovat dale.

Potřebuju na tom rozchodit akorát PWM. Příkazy pak budu posílat přes hyperterminal. Stačí mi pár příkazů- levý motor vpřed/vzad a o kolik, to stejné pro druhý motor. Zapojení je následující: procesorová deska ATmega128 + klasický H-most s obvodem L298N (schema jsem přiložil), piny PB1-PB4 obsluhují vstupy INPUT 1-4 pro řízení směru chodu, piny PB5(OC1A) a PB6(OC1B) by měly generovat PWM signál. Bluetooth modul mám připojený na USART1 - piny PD2(RXD1) a PD3 (TXD1).

Tu něco nehraje. Jakým způsobem by měl procesor určit “o kolik”? PWM použitá na 1f DC motor bez zpětné vazby může určit pouze rychlost motoru. A to zatím neřeším to, že na 1 obousměrný motor potřebuješ úplný H můstek (polovina L298), kterýžto je řízen dvěmi PWM, pro 2 motory jsou tedy třeba 4 PWM výstupy (nebo řídit u každého můstku jeden vstup PWMkem a druhý vstup držet konstantně na 0 nebo 1 dle požadovaného směru přičemž při 1 je rychlost inverzní).

S tím “o kolik” jsem to napsal blbě…měl jsem na mysli regulaci rychlosti. L298 je ale přece úplný H-můstek pro řízení dvou motorů.

On je to dvojitý úplný H můstek. Každý H má 2 vstupy (+ enable).
Nakresli schéma. Třeba si to představuješ jinak, než píšeš. Do té doby není co řešit ikdyž najdeš někoho, kdo to napíše.

Mám to zapojené přesně podle datasheetu L298, zapojení do desky jsem popisoval výše

To sice popisoval, jen tedy alespoň mě nedává smysl. L298 má 4 vstupy (2 na 1 motor, pokud nepočítám enable) a ty popisuješ 2 PWM výstupy z mcu. Co se týká věty:

  • nikde ho nevidím.

Co se týče toho PWM tak to je OK. Jedno PWM na enable1 - motor 1 a druhe PWM na enable 2 - motor 2. Input 1 a 2 slouzi na direct, reverse nebo stop motoru 1, input 3 a 4 direct, reverse nebo stop motoru 2. V zapojeni problem nevidim.
P.S. jestli to vydrzi do pristiho tydne tak ti to sem hodim. Project muze byt bud v Codevision nebo AVR studiu.

Ano, i to je možnost (ale stačily by 2 IO procesoru na motor, z toho 1 PWM), nicméně to nic nemění na tom, že prostě pouze 2xPWM na 2 motory nestačí. Proto jsem, a asi ne jen já, chtěl vědět, jak si zapojení představuje.

on to ma uz zapojen, neviem preco sem neda shcemu. zbytocne rozmyslat ako by to mohlo byt, ked uz to nejak spravene je…

zde je schema h-mostu, připojení do ATmegy jsem popisoval výše
schematicfinal.png

Zalda: potřeboval bych to rozchodit nejpozději v pondělí