www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2313 und ADC


Autor: Falko Jahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute !


Ich bin gerade ziemlich am verzweifeln. Habe festellen müssen, das die 
beiden Ain Eingäng gar keine AD-Converter sind ( natürlich erst nach dem 
Ätzen :-(, ja ja ich weiß Datenblätter lesen...)  Also hab ich noch eine 
R-C Beschaltung  vom Port B.2
nach Port B.0 auf die Platine "gebastelt", so wie es auch hier im Forum 
schon erwähnt wurde. Nur leider bekomme ich mit meinem Programm nur 
zufallszahlen.

hier der Code:
--------------------------
'Variables
Declare Sub Getadcvalue()
Dim Result As Byte
Dim Convertcomplet As Bit          '1 wenn AD Wandlung fertig

'Ein Ausgänge Festlegen
Config Pinb.0 = Input              'ACI IN
Config Pinb.1 = Input              'ACI IN
Config Pinb.2 =output              'ANALOG OUT
Daout Alias Portb.2                ' D/A Ausgang


'...und Interrupts Festlegen
Enable Interrupts
Enable Aci
Config Timer0 = Timer , Prescale = 1024
Enable Timer0
On Aci Aci_int
On Timer0 Timer_int


Do
      Call Getadcvalue()                                    'starte A/D 
Wandlung

      Do
      Loop Until Convertcomplet = 1   'warte bis Wandlung komplett
         Print Result                 'Debug print
         '........
         '..........
         ' hier steht irgendwann mal die Display Ausgabe Routine
         '..........
Loop

'*************************
'*AD Wandler start Routine
'****************************
Sub Getadcvalue
   Daout = 1                 'starte Ladevorgang
   Tcnt0 = 0                 'Timer zurücksetzen
   Start Timer0              '..und starten
   Convertcomplet = 0
End Sub


'******************************
'*Analog Comparator Interrupt
'******************************
Aci_int:
   Disable Interrupts
   Stop Timer0
   Result = Tcnt0

   Daout = 0
   Waitms 10
   Convertcomplet = 1
   Enable Interrupts

Return

'****************************************
'* Timer Überlauf = Eingang out of Range
'**************************************
Timer_int:
   Disable Interrupts
   Stop Timer0
   Result = 255

   Daout = 0
   Waitms 10
   Convertcomplet = 1
   Enable Interrupts

Return



---------------------------------
bin jetzt schon seit dem WE dran, und hab´s nicht
zum laufen gebracht ! Irgendwelche Ideen ?

- Falko

PS
Compiler: Bascom-AVR V1.11.6.4

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn diese R-C Schaltung? Wie sieht die denn aus?

Gruß
Markus

Autor: Falko Jahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Also vom Port B.2 geht ein Widerstand zum Port B.0
und vom dort ein Kondensator nach GND geschaltet
R ist 24k
Für den Kondensator hab ich schon verschiedene Werte gestetet
(47n / 1uF..)

Das Analoge Eingangsignal geht auf Port B.1
( über Spannungsteiler und Z-Diode zur Begrenzung auf 5V)


-Falko

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm,
mal abgesehen davon das ich von dem Basic Krempel kein Wort verstehe 
sehe ich als erstes mal, das der PortB.2 kein PWM Ausgang ist. Ich 
vermute mal das an diesem Port ein PWM Signal rauskommen soll welches 
dann durch Widerstand und Kondensator geglättet wird. Wenn der Compiler 
das PWM Signal nich per Software erzeugt kann es nicht gehen.

Gruß
Markus
http://www.elektronik-projekt.de/

Autor: Falko Jahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, kein PWM.
Es soll folgender maßen funktionieren :
Kondensator solange aufladen bis vom Komparator ein Interrupt
ausgelöst wird. Die Zeit vom start bis zum interrupt müßte doch
dann der Spannung am Eingang entsprechen.

1. Starte Kondensator Ladevorgang
2. Starte Timer

3. Wenn Interrupt dann...
4. Stop Timer
5. Ergebniss gleich Zeit Timer

6. Kondensator entladen
7. Timer auf null zurücksetzen


Obwohl PWM auch ne möglichkeit währe...

- Falko


PS:
Und ich versteh nix von diesen Assembler zeugs...

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, verstehe wie das funktionieren soll. Einen Fehler konnte ich jetzt 
leider nicht finden.

Gruß
Markus

Autor: Remo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der Atmel Homepage gibt es eine Applikation Note "AVR128: Setup and 
Use the Analog Comparator".

Hat nur 3 Seiten. Vielleicht hilfts ja bei der Fehlersuche, wenn Du Dir 
die Funktionsweise des Comarators "reinzeihst".

Viel Glueck,
remo

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Low cost AD Wandler mit dem Analog Komparator.
http://elm-chan.org/docs/avr/avradc_e.html

Autor: Uwe* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich vermute mal dein Timer ist schneller als die Ladekurve an deinem 
Eingang, mit 24K*47n brauchst du
1,13 ms bis 63% Umax(=Tau).Nach 5 Tau, sagt man, ist der Ladevorgang zu 
99% abgeschlossen. Das Ganze hat dann vor allem noch den blöden 
Beigeschmack einer e-Funktion und ist zum messen ungünstig. Besser wäre 
vermutlich eine Ladung mit I = const., dann ist t = C * delta U / I . 
Wenn du I und C auf deine Timerzeit abstimmst wird die Sache recht 
einfach. Achte aber beim entladen auf einen def. Startwert, sonst stimmt 
die Sache auch nicht.
Gruss Uwe

PS.:kann mal jemand die Sache mit den mind.4 Zeichen im Namen andern, 
jedesmal ist der Beitrag weg!!!!!!

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, das mit dem Namen ist repariert!

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klasse und Danke!
Gruss Uwe

Autor: Falko Jahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten, es klappt jetzt.
Hatte noch den falschen Chip bei Bascom eingestellt.
Die R und C Werte muß ich auch noch etwas optimieren.
Thanks...

Gruss
Falko

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.