Kör en Stepper Motor med en AVR mikroprocessor (6 / 8 steg)
Steg 6: jag aldrig halv-steg, eftersom inte jag är en halv-stepper...
Quest lyriska åt sidan, halv-stepping din motor är där det händer. Du får mer toppströmmen, mer momentana vridmoment och två gånger den kantiga upplösningen.Halv-stepping i ett nötskal: i stället för blå, svart, röd, gul, du kör motorn med blå, blå + svart, svart, svart + röd, röd, röd + gul, gul, gul + blå. Resultatet är att för hälften av tid du engagerande båda magneter på en gång.
Och under de tider som båda är engagerade, motorn halvvägs mellan de två, krympande vinkeln mellan "steg" och gör den motoriska sväng smidigare. Kan du berätta från videon? Jag är inte säker...
Del av koden som gör halv-stepping ser nu ut så här:
void halfStepping (uint16_t dröjsmål uint8_t direction[]) {uint8_t i; för (i = 0; i < = 3; i ++) {PORTB = riktning [i]; / * enda spole del * / _delay_ms(delay); PORTB | = riktning [jag + 1]; / * Lägg i halv-steg * / _delay_ms(delay); }}
Det första PORTB kommandot anger en enda stolpe till positiva och resten till negativ. Sedan väntar. Sedan anger kommandot andra PORTB en andra pol (på den andra slingrande) till positiva, engagerande båda lindningarna för 1,4 x vridmomentet (och 2 x strömmen).
En full programmet notering är bifogat nedan. Två matriser definieras nu (medsols, moturs) och båda har 5 element varje för i + 1 inträde i funktionen halfStepping.