AVR-PC-Control

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • AVR-PC-Control

      AVR-PC-Control

      Das AVR-PC-Control wurde von mir entwickelt,
      um einem PC die Möglichkeiten eines AVRs zur Verfügung zu stellen.
      Es ist der Versuch, eine Art eierlegende Wollmilchsau zu erschaffen.
      Die Kommunikation erfolgt über die serielle Schnittstelle.
      Einerseits gibt das AVR-PC-Control periodisch seine Messwerte an den PC weiter,
      umgegekehrt kann der PC über Steuerbefehle das AVR-PC-Control zu bestimmten Aktionen veranlassen.

      Ziel:
      Universelles Interface zum Anschluss an PC (RS232/USB),
      aber auch für den Stand-Alone-Betrieb (-> Automatik > 0)
      Die Einsatzgebiete können einfache Messaufgaben sein,
      aber ich setzte einzelne Geräte auch als Haussteuerung bzw. -überwachung ein.

      Hardware:
      PORTA -> digitale u. analoge Eingänge, analoge Druck- (MPX) und Feuchtesensoren (HIH)
      PORTB -> Schaltsausgänge 0-7 über einen ULN2803
      PORTC -> LCD
      PORTD -> D0,1 -> UART/USB
      D2,3 -> SHT11-Sensor oder INT0 (Counter), INT1
      D4 -> 1-Wire
      D5,6 -> DS1307, I2C/TWI
      D7 -> Servo, Funksteckdosen
      (Aufbau entspricht im Groben dem AVR-Ctrl -> mc.mikrocontroller.com/de/avr-ctrl.php)

      Aufgaben:
      - LCD-Ausgabe (Messwerte, PC-Informationen, ...)
      - 8 Schaltausgänge
      - 4 digitale Eingaenge (z.B. fuer Tasten, ...)
      - 4 10-Bit analoge Eingaenge
      - SHT11-Sensoren-Unterstuetzung
      - Uhr (DS1307)
      - Funksteckdosen ansteuern
      - Erkennung und Ansteuerung I2C/TWI-Bausteine:
      DS1307, LM75, HYTxxx, HIH60xx, BMPxxx, BH1750; PCF8574(PIO/LCD)
      - Erkennung und Ansteuerung 1-Wire-Bausteine:
      DS1820, DS18B20, DS2405, DS2408, DS2413, DS2423, DS2438, DS2450, RoBue-Clones

      Alle aufgeführten Sensoren werden beim Starten des AVR-PC-Control erkannt,
      deren Messwerte ausgelesen, umgerechnet und über die serielle Schittstelle ausgegeben.
      Z.B.
      BMP_P=94445 (= 94445 Pa absoluter Luftdruck)

      Betriebsmodi (Register im BASCOM-Code: "Avrmodus"):
      (Steuerbefehl: "MODE/x")
      x=0 -> Input-Modus
      - Eingabe von Befehlen über UART
      - Ausgabe der Mess- und Statuswerte nach Befehl "STATUS"
      x=1 -> IO-Modus
      - Eingabe von Befehlen
      - Periodische Ausgabe (1x/min) der Werte über UART
      x=2 -> LCD-IO-Modus
      - wie x=1
      - Zusätzliche Ausgabe der Werte auf LCD
      x=3 -> Standalone-Modus
      - wie x=2
      - Schaltfunktionen über intere Routinen.
      (Müssen individuell programmiert werden!)

      Steuerbefehle vom PC:
      Aufbau: "ABCDE/abcdefg/12345" (Befehl1/Befehl2/Befehl3)
      (Länge pro Befehl max. 20 Zeichen!)
      z.B.:
      - PB_ON/3 -> PORTB.3 einschalten
      - PB_OFF/3 -> PORTB.3 ausschalten
      - LCD_1/Hallo Welt! -> 1. LCD_Zeile "Hallo Welt!" ausgeben
      - TIME/20:00:00 -> Zeit auf "20:00:00" setzen
      - MODE/3 -> Standalone-Mode setzen
      - RESET -> Startet das AVR-PC-Control neu
      - ? oder HELP gibt Befehlsübersicht aus

      Angefangen habe ich mit einem ATMega32.
      Als dessen Speicher aber nicht mehr ausreichte,
      habe ich das Projekt aufgeteilt:
      -> TWI/I2C-Funktionen mit ATMega32
      -> 1-Wire-Funktionen mit ATMega32
      -> All-in-one mit ATMega664

      Ich stelle hier mal die TWI/I2C-Variante ein:
      AVR-PC-Control.zip

      Hier eine Übersicht über die Steuerbefehle:
      Befehlstabelle_AVR-PC-Control.pdf

      Zwei Bilder (Schema und fertiges Gerät)

      AVR-PC-Control_Schema.jpgavr-pc-control_bsp.jpg


      Beispiel einer Ausgabe auf einem Linux-Webserver:
      AVR-PC-Control_CGI.pdf

      Viel Spaß, RoBue

      PS: Viele Routinen für Sensoren oder andere Erweiterungen habe ich nicht selbst verfasst, sondern in verschiedenen BASCOM-Foren gefunden und an mein System angepasst. Wo ich den Verfasser noch irgendwie wusste, habe ich dies bei den Routinen vermerkt. Wo sie fehlen, bitte nachsehen oder mir melden.

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von RoBue ()

    • Hi,
      da hast du dir aber viel Arbeit gemacht.
      Ob man immer alles mögliche in eigne Projekte integrieren wird, bezweifle ich, da der Overhead zu groß wird.
      Ich hatte ja im Lexikon ein Beispiel dargestellt, eine Anpassung an benötigte Daten muss man eben selbst vornehmen.
      LAZ 12 Messwerte vom AVR zum PC übertragen und anzeigen

      Gruß, Michael
      Code first, think later - Natural programmer :D
    • Hallo Michael,
      danke für die Rückmeldung.
      Bei der Visualisierung bin ich noch dran.
      Danke für den Tip, muss mal sehen, ob ich die Ausgabe des AVR-PC-Control anpassen kann.

      Bisher ist die Ausgabe einfacher ASCII-Code.


      Quellcode

      1. AVR-STATUS:
      2. RTC=16:16:00_30.12.17_5
      3. MODE=2
      4. INTERVALL=1
      5. IBUFF=0
      6. PORTB_0=1
      7. PORTB_1=0
      8. PORTB_2=0
      9. PORTB_3=0
      10. PORTB_4=0
      11. PORTB_5=0
      12. PORTB_6=0
      13. PORTB_7=0
      14. PORTA_0=1
      15. PORTA_1=1
      16. PORTA_2=1
      17. PORTA_3=1
      18. PORTA_4=1023
      19. PORTA_5=1023
      20. PORTA_6=1023
      21. PORTA_7=519
      22. AVR_VCC=4947
      23. HREG=-1_-1_-1_-1_-1_-1_-1_-1
      24. HYT-1_T=245
      25. HYT-1_H=233
      26. HYT-1_DP=22
      27. BMP_T=239
      28. BMP_P=94207
      29. BMP_A=610
      30. BH1750_L=21
      31. TIMER=0_0_00:00_00:00
      32. -----
      Alles anzeigen
      Falls Interesse besteht, kann ich gerne auf Einzelheiten eingehen,
      was die Ausgabe und die Steuerung des AVR-PC-Control betrifft.

      Gruß RoBue