Duty Cycle?
Also hier der Code für die PWM:
ATMega128 @ 16Mhz
Code:
#define PORTASET(x) PORTA |= (1<<x)
#define PORTACLR(x) PORTA &= ~(1<<x)
#define PORTBSET(x) PORTB |= (1<<x)
#define PORTBCLR(x) PORTB &= ~(1<<x)
unsigned char richtung=1;
unsigned char wertA[8];
unsigned char wertB[8];
unsigned char max=100;
unsigned char zaehler=0;
unsigned char temp=0;
int main()
{
sei();
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
temp = max / 8;
wertA[0] = temp * 1;
wertA[1] = temp * 2;
wertA[2] = temp * 3;
wertA[3] = temp * 4;
wertA[4] = temp * 5;
wertA[5] = temp * 6;
wertA[6] = temp * 7;
wertA[7] = temp * 8;
wertB[0] = temp * 1;
wertB[1] = temp * 2;
wertB[2] = temp * 3;
wertB[3] = temp * 4;
wertB[4] = temp * 5;
wertB[5] = temp * 6;
wertB[6] = temp * 7;
wertB[7] = temp * 8;
for(;;)
{
zaehler++;
for(unsigned char i=0;i<8;i++)
{
if(zaehler == wertB[i])
{
PORTBCLR(i);
}
else if(zaehler == max)
{
PORTBSET(i);
}
if(zaehler == wertA[i])
{
PORTACLR(i);
}
else if(zaehler == max)
{
PORTASET(i);
}
}
if(zaehler == max)
{
zaehler=0;
}
}
}
Treiber ist wie gesagt ULN2803
längere Leitungen hab ich nicht - hab das ganze mit 4 Krokokabeln verbunden.
Ich kann mir schon vorstellen, dass eine Induktivität besser wäre, jedoch habe ich ein Platzproblem - es sollten also nicht unbedingt Transformatoren oder ähnliche große Gebilde vorhanden sein.
Lesezeichen