DC motor aansturen met H-bridge ipv relais

Ik ben gaan experimenteren omdat het ding zich niet leek te gedragen zoals de beschrijving. Inmiddels ben ik daar vrij zeker van, de beschrijving van de verkoper klopt gewoon niet, je kunt die Enable inputs niet gebruiken om de richting te kiezen, zie mijn vorige bericht.

De beschrijving van de verkoper was niet zo fout als ik dacht, maar dit:

PIN Definition:
1. RPWM: Right Turn PWM
2. LPWM: Left Turn PWM
3. R_EN: Right Turn Enable (High Active)
4. L_EN: Left Turn Enable (High Active)

5. R_IS: Right Turn Current Warning (May Leave Floating)
6. L_IS: Left Turn Current Warning (May Leave Floating)
7. VCC: (5V)
8. GND

deed mij doen geloven dat je L_EN en R_EN afzonderlijk hoog kunt maken om een richting te kiezen. Maar in de Method1 en Method2 connections doen ze dat niet en zijn L_EN en R_EN of beide hoog of beide krijgen hetzelfde PWM signaal.

De beschrijving is wel verwarrend, je moet "left turn enable" zien als de linkse BTS en de andere als de rechtse BTS, niet de draaizin.
De Nederlandse vertaling van Alie is nog erger ;)

[Bericht gewijzigd door MGP op woensdag 17 mei 2023 12:39:20 (16%)

LDmicro user.

....dubbele post...

[Bericht gewijzigd door Delphium op woensdag 17 mei 2023 13:07:22 (98%)

Als ik het oorspronkelijke Chinees laat vertalen door Google Translate staat er ook 'turn' of 'rotate' (Chinese karakter is ? mmm forum laat hem niet zien).

Met PWM op de beide enables voor de snelheid en high/low op de PWM inputs voor de richting werkt het nu zoals het hoort. Nadeel is misschien dat dit nu vrijloopbedrijf is en geen push-pull zoals hier mooi beschreven.

Als ik het per se met 1 Arduino zou willen doen zou ik wellicht een los demultiplexer IC kunnen gebruiken om het PWM signaal naar de gewenste pin te sturen maar ik denk dat die extra Nano er toch komt en dan kan ik prima twee aparte PWM signalen genereren vanuit die Nano zelf. En het zou ook zomaar kunnen dat ik hem in een richting op de maximale snelheid wil laten draaien, dan heb ik maar 1 PWM signaal nodig.

Probleem in ieder geval opgelost, mijn dank.

Lambiek

Special Member

Op 17 mei 2023 13:03:51 schreef Delphium:
Als ik het per se met 1 Arduino zou willen doen zou ik wellicht een los demultiplexer IC kunnen gebruiken om het PWM signaal naar de gewenste pin te sturen maar ik denk dat die extra Nano er toch komt en dan kan ik prima twee aparte PWM signalen genereren vanuit die Nano zelf.

Dat moet toch makkelijk via één controller gaan zeker, ik lees ook een encoder in (A en B signaal) en stuur een motor naar een bepaalde positie. En daarbij wordt ook de motor-as nog eens in positie gehouden, dus bij verdraaiing van de motor-as wordt de positie behouden.

Dat gaat allemaal met één controller, de afhandeling voor de encoder gebeurt in een interrupt.

Als je haar maar goed zit, GROETEN LAMBIEK.

De AVR is een beetje beperkt in PWM signalen. Als in het zijn er niet al te veel en dan zitten ze op specifieke pinnen. Als je een timer voor wat anders dan PWM nodig hebt, dan zijn dat direct 2 pinnen die geen PWM meer kunnen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Er moeten nog meerdere LEDs dimbaar (met 16 bit pwm) worden aangestuurd en nog tenminste drie servo's. Voor die laatste heb ik inmiddels wel een servo shield omdat ik anders echt niet uitkwam dus die tellen eigenlijk niet meer mee.

Er zijn 3 timers waarvan je er in principe 2 kunt wijzigen (de derde ook maar dat heeft gevolgen voor de systeemtijd). Voor de 16bit pwm voor de LEDs ben ik meteen timer2 met pinnen 9 en 10 kwijt. Voor deze motor ben ik timer1 en pinnen 3 en 11 kwijt. Dan blijft alleen timer0 over op pinnen 3 en 4. Met wat passen en meten gaat het qua aantal en soort pwm signalen misschien net lukken.

De voornaamste reden om er een eventueel Nano bij te zetten is dat deze motor over drie meter kabel wordt aangesloten/aangestuurd en ik de op 15kHz gePWMde aandrijfstroom daar niet doorheen wil sturen. En als ik het PWM aanstuursignaal voor d H-brug eroverheen stuur moet er weer een set 485's tussen (PWM over lange kabels). Dan is het voor mij makkelijker (en even duur) om er een Nano van 7 euro tegenaan te gooien en via een hoog/laag signaallijntje door te geven of het 'rolgordijn' open of dicht moet.

Er zijn misschien ook nog andere oplossingen mogelijk maar (de ene Arduino bij deze motor en juist de andere onderdelen op afstand). Ik moet eerst het hele project goed in beeld hebben om te zien of dat een optie is (de motor komt vlak onder het plafond te hangen). Ik ben nu vooral bezig met de losse onderdelen: aansturen van de LEDs op 16 bit, servo's, deze motor, mp3 player. Volgende stap is het decoderen van de A/B encoder van deze motor voor de odometrie. Inderdaad via interrupts. Ik wil wel alle 4 de flanken van het A/B signaal detecteren maar dat gaat volgens mij wel lukken.