Forum: Mikrocontroller und Digitale Elektronik Motor ansteuern mit Atmega8


von Thomas (Gast)


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
}

von Düsendieb (Gast)


Angehängte Dateien:

Lesenswert?

Hier habe ich auch schon so was gemacht. Da muss aber der Teil für die 
LCD Ansteuerung gelöscht werden.


http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte#PWM___Pulsweitenmodulation



Axel

von Thomas (Gast)


Lesenswert?

Danke für die schnelle Antwort aber daraus kann ich nicht erkennen was 
ich programmieren soll um am Ausgang ca. 1,8-5V zu erhalten.

von Klaus Dieter (Gast)


Lesenswert?

Also ich würde den Wert vom ADC mit 0,64 multiplizieren und darauf 1,8 
addieren.
(0,64 => 5V-1,8V)/5V=0,64)

von spess53 (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

Korrektur: nicht 46, sondern 71.

MfG Spess

von Thomas (Gast)


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 :-)

von spess53 (Gast)


Lesenswert?

Hi

>Wenn das funktionieren würde wäre ich sehr glücklich :-)

Dann vergleiche halt 'buffer' mit einem Wert (ca. 5) und lade OCR1A mit 
0x00 wen Buffer kleiner ist.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.