Motor ansteuern mit Atmega8

Gast #2594534
Lesenswert?

Morgen,
habe das unten stehende Programm geschrieben und habe 0-5V im Eingang 
und 0-5V als PWM-Signal im Ausgang. Ich möchte jedoch ca. 1,8-5V am 
Ausgagng erhalten.Die Frage ist nun wie??Muss dazu sagen das ich 
Anfänger bin.
1
include <avr/io.h>
2
#include <stdint.h>
3

4
#include <avr/io.h>
5
#include <stdint.h>
6

7
void adc_init(void) 
8
{
9
ADMUX = (1<<REFS0);
10

11
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
12
}
13
void timer_init(void)
14
{
15
DDRB = (1 << PB1 );
16

17
TCCR1A = (1<<COM1A1) | (1<<WGM11);
18
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);
19
  
20
ICR1 = 0x008F;
21

22
}  
23

24
int main()
25
{
26
uint16_t buffer;
27

28
timer_init();
29

30
adc_init();
31

32
OCR1A = 0x0000;
33
 
34
 
35
  while( 1 )
36
  {
37
  ADCSRA |= (1<<ADSC);
38

39
 while ( !(ADCSRA & (1<<ADIF)) )
40
          ;
41

42
buffer = ADC;
43

44

45
OCR1A = (buffer>>3);
46
   } 
47
}
Gast #2594616
Lesenswert?

Hi

Ertens:

>ICR1 = 0x008F;

ICR ist der Topwert. Dein OCR-Wert kann aber maximal 0x7F sein. Du 
dürftest die 5V nicht ganz erreichen.

Zu deinem Problem:

Erhöhe den Topwert um 46 und lade OCR1A mit buffer+46.

MfG Spess
Gast #2594660
Lesenswert?

Super! Es funktioniert fast wie gewünscht.Es soll jedoch erst 1,8V 
ausgeben wenn am Eingang 0,1V anliegen. Von 0-0,1V soll der Ausgang 0 
sein.Wenn das funktionieren würde wäre ich sehr glücklich :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren