- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: KAP(Luftbildfotografie)-Steuerung per XBee realisieren

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Anzeige

    E-Bike
    Zum Verständnis der Code des Sende-Atmega8:

    Gesendet wird am Ende sub XBee:

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m8def.dat"
    $crystal = 7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Pwr_all Alias Portd.2 'Abschaltung der Servos und LM2675 (5V für GPS, Video 5,8 GHz Tx)
    Pwr_gps Alias Portd.3
    Pwr_video Alias Portd.4

    Led_rot Alias Portc.5

    Pan1 Alias Portb.0 ' für L293 D
    Pan2 Alias Portd.7



    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5

    '---- Commands ----
    Dim Quittierung As String * 21
    Dim Gpshoehe As String * 10

    '---- Command empfangen ----
    Dim Cmd As Byte

    '---- GPS-String einlesen ----
    Dim Gps_zeichen As Byte
    Dim Gpsdaten As String * 98
    Dim Gps_header As String * 6
    Dim Gps_anzahl As Byte
    Dim Gps_teilstring(14) As String * 12
    Dim Gps_hoehenteilstring(2) As String * 8

    '---- Commands einlesen ----
    Dim Befehls_zeichen As Byte
    Dim Befehlsdaten As String * 101
    Dim Befehls_header As String * 6
    Dim Befehls_anzahl As Byte
    Dim Befehls_teilstring(5) As String * 21

    '---- Temperaturmessung ----
    Dim Temp(9) As Byte
    Dim X As Byte
    Dim Celsius As Integer
    Dim T As Single
    Dim Temperatur As String * 5

    '---- PWM für A293D ----
    Dim A As Byte



    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Serialin = Buffered , Size = 128
    'Open "com1:" For Binary As #1
    'Open "COMB.7:9600,8,N,1" For Input As #2 'PB.7 = RxD SoftUART / GPS

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' Timer für PWM
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8

    ' schaltbare Ausgänge
    Config Pwr_all = Output ' GPS- und Video-Modul sowie 5 Volt Versorgung hierfür abschalten
    Config Pwr_gps = Output
    Config Pwr_video = Output

    ' Status-LED rot
    Config Led_rot = Output

    ' L293D für Servo als Motor
    Config Portb.1 = Output
    Config Pan1 = Output 'LD293
    Config Pan2 = Output

    '1wire für Temp.-Messung
    Config 1wire = Portc.0 ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von Bascom durch Software realisiert

    'Interrupts
    Enable Interrupts
    Enable Timer1

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $GROUND#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Pwr_all = 0 ' bei Systemstart Peripherie auf OFF
    Pwr_video = 0
    Pwr_gps = 0

    Led_rot = 1 ' Led_rot OFF

    Pan1 = 0 'L293D OFF
    Pan2 = 0

    'LED blinken lassen
    Led_rot = 1
    Waitms 100
    Led_rot = 0
    Waitms 100
    Led_rot = 1
    Waitms 100
    Led_rot = 0


    'nach einer Sek. Pwr_all ON
    Wait 1
    Pwr_all = 1

    'nach einer weiteren Sek. Pwr_gps ON
    Wait 1
    Pwr_gps = 1

    'nach zweit weiteren Sek. Pwr_video ON
    Wait 2
    Pwr_video = 1
    Wait 5 ' und nach 5 Sekunden Pwr_video wieder OFF
    Pwr_video = 0


    ' Begrüßung




    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------

    Do

    '========== hier laufen Tests ab ==========================================

    Quittierung = "quit-test"
    Gpshoehe = "gpshigh"

    '==========Temperaturmessung mit DS18B20Z 1Wire============================

    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 800

    1wreset
    1wwrite &HCC
    1wwrite &HBE


    For X = 1 To 9
    Temp(x) = 1wread()
    Next


    Celsius = Makeint(temp(1) , Temp(2))

    T = Celsius / 16

    Temperatur = Fusing(t , "##.#")


    '==========Spannung LiPo 2S messen========================================

    Spannung = Getadc(3) ' Zelle messen und berechnen
    Zellspannung_orig = Spannung * Adc_multi
    Zellspannung_orig = Zellspannung_orig * 2
    Zellspannung = Fusing(zellspannung_orig , "#.#")

    If Zellspannung_orig <= 6.4 Then ' Zellspannung unter/gleich 6,4 Volt (2x 3,2 Volt) dann...
    Gosub Lipo_saver_off
    End If


    '==========Rx Prüfen auf Befehlseingänge==================================




    '==========GPS-Auswertung (NL-504ETT)=====================================




    '(

    Inputbin cmd


    Select Case Cmd

    Case 50
    Cmd = ""
    Led_rot = 1
    Wait 1
    Led_rot = 0
    Wait 1


    End Select
    ')


    Call Xbee ' kontinuierliches Senden der Parameter


    Loop



    End


    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:
    Select Case Befehls_teilstring(2)

    Case "50" ' Teilstring(2) auswerten auf "TAKEPHOTO"

    Led_rot = 1
    Wait 2
    Led_rot = 0



    End Select


    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:
    Quittierung = "LiPo-Saver!" ' Quittierung an Bodenstation
    'Print #1 , "LiPo-Saver!"
    Quittierung = "" 'Quittierung löschen
    Waitms 500

    Pwr_all = 0 ' testweise Ausgabe PWR_all = 0 --> hier: LED an!

    Disable Interrupts



    Powersave ' sleep

    Return


    '----------------Sonstiges------------------------------------------------------


    Sub Xbee

    Print "$ground" ; "#" ; Quittierung ; "#" ; Zellspannung ; "#" ; Temperatur ; "#" ; Gpshoehe


    End Sub


    und zum Empfangen:

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m16def.dat"
    $crystal = 7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Led_gruen Alias Portb.0
    Led_lcd Alias Portb.1

    Taster Alias Pind.6


    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    'Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Commands einlesen ----


    Dim Quittierung As String * 21

    '---- Command senden ----
    Dim Cmd As Byte

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5





    'Dim für lesen
    Dim Gelesen As Byte 'dollarzeichen einlesen

    Dim Teilstring(14) As String * 12
    Dim Anzahl As Byte

    Dim Datenstring As String * 80
    Dim Header As String * 6
    Dim Tempstring As String * 2





    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    Config Serialin = Buffered , Size = 100 ' konfig serial in

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' LEDs
    Config Led_gruen = Output
    Config Led_lcd = Output

    ' Taster
    Config Taster = Input

    ' LCD
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2

    Deflcdchar 0 , 32 , 32 , 21 , 14 , 4 , 4 , 4 , 4 ' replace [x] with number (0-7)

    'Interrupts
    Enable Interrupts

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $KAPRIG#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Led_gruen = 1 ' Led-grün OFF
    Led_lcd = 0 ' LCD-Beleuchtung ON




    ' Begrüßung
    Wait 1

    Cls
    Cursor Off
    Locate 1 , 1
    Lcd "KaprigControlRxZ1"
    Locate 2 , 1
    Lcd "KaprigControlRxZ2"
    Locate 3 , 1
    Lcd "KaprigControlRxZ3"
    Locate 4 , 1
    Lcd "KaprigControlRxZ4"


    Led_lcd = 1
    Waitms 200
    Led_lcd = 0


    Led_gruen = 0
    Wait 1
    Led_gruen = 1
    Wait 1
    Led_gruen = 0
    Wait 1
    Led_gruen = 1
    Wait 1
    Led_gruen = 0
    Cls


    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------



    Do
    Gelesen = Inkey() ' $ground#quit-test#7.1#24.6#gpshigh

    Locate 1 , 1
    Lcd Gelesen

    If Gelesen = 36 Then Input Datenstring Noecho

    Header = Mid(datenstring , 1 , 6)

    If Header = "GROUND" Then

    Cls
    Anzahl = Split(datenstring , Teilstring(1) , "#")
    Datenstring = ""

    'Test
    Locate 3 , 1
    Lcd Teilstring(2)


    Wait 1
    End If





    Locate 4 , 1
    Lcd Chr(0)




    If Taster = 0 Then
    Cls
    Led_gruen = 1
    Led_lcd = 1
    Powerdown
    End If


    Loop
    End







    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:




    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:

    Return


    '----------------Sonstiges------------------------------------------------------



    Sub Xbee




    End Sub

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Ich habe alles noch mal überprüft und auch noch einen Max232 zweischengesetzt, aber es läuft nicht.

    Ich hatte auch einmal kurz Teile hiervon ausprobiert: http://www.krasser-mann.com/projects/gps-tracker/,
    und da konnte ich auch Teilstrings anzeigen... so ganz verstehe ich den Code aber nicht.

    Beide AVR laufen mit 7,3728 MHz. Es werden definitiv Daten gesendet, allerdings gibt das Inkey nicht die 36 für $ aus, sondern eine dreistellige Ziffer, die augenscheinlich schnell von 0 nach oben hochläuft...

    Wo kann der Bock hängen?

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    es lag am Quarzoszillator ... also das Teil mit vier Beinchen... sorry

    Was wähle ich beim http://www.engbedded.com/fusecalc Fusecalculator aus, wenn ich einen o. g. Quarzoscillator nehmen will!?

    Danke

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied Avatar von da_miez3
    Registriert seit
    24.02.2012
    Ort
    Ilmenau
    Alter
    37
    Beiträge
    198
    Hey. Funktioniert die Ausgabe der einzelnen Daten jetzt wie gewollt?

    Würde mich auch interessieren, was man da einstellt. Hab mir da seit Monaten gar keine Gedanken mehr drüber gemacht. Hab immer n 16Mhz Quarz an XTAL1 und XTAL2 mit zwei 22pF Kondensatoren an GND . Nehm dann CKSEL = 1111 SUT = 11 . Warum eigentlich? Es funktioniert jedenfalls.. Bei nem ext Quarzoszillator schließt du ihn ja nur an XTAL1 an. Hätte jetzt auf CKSEL=0111 SUT=00 gestellt. Aber machs mal lieber nicht
    Geändert von da_miez3 (25.04.2012 um 17:03 Uhr)

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo, läuft jetzt! Danke für die Hilfe!

    Bzgl. der Fuses muss ich nochmal die Datenblätter wälzen...

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    soweit bin ich zufrieden und meine Übertragung per XBee besteht..

    Es sendet der "Luftbildsender" einen String: $GROUND#quit-test#7.5#24.4#gpshigh (quittierung / Spannung / Temperatur / GPS-Höhe)
    Das funktioniert alles...


    Die "Bodenstation" empfängt den o. g. String, teilt ihn auf und stellt die Werte auf einem LCD dar.
    Gleichzeitig soll die "Bodenstation" Befehle an den "Luftbildsender" einen Befehl schicken können; in meinem Beispiel einen taster auswerten und daraufhin einen Befehl abschicken, woraufhin sich ein umgebauter Servo (L293D...) am "Luftbildsender" dreht...

    Aber irgendwie ist das alles zu langsam! Bzw. dreht sich der Servo erst nach vielen Sekunden - die Sende/Empfangsroutine ist anscheinend zu träge...

    Vielleicht mag ja jmd. über den Code rüberschauen:


    Bodenstation (Atmega16):

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m16def.dat"
    $crystal = 7372800 '7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Led_gruen Alias Portb.0
    Led_lcd Alias Portb.1

    Taster Alias Pind.6


    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    'Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Commands einlesen ----


    Dim Quittierung As String * 21

    '---- Command senden ----
    Dim Cmd As String * 11

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5


    'Dim für lesen
    Dim Dollarzeicheneingang As Byte 'Beginn des Datenstrings mit Dollarzeichen
    Dim Teildaten(14) As String * 20 ' Array mit den extrahierten Daten
    Dim Anzahl As Byte
    Dim Datenstring As String * 40
    Dim Datenkopf As String * 7

    Dim Lcd_command As String * 20
    Dim Lcd_voltage As String * 20
    Dim Lcd_temperatur As String * 20
    Dim Lcd_gps As String * 20

    Dim Connect As Byte


    '---- LCd Menü ----



    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    Config Serialin = Buffered , Size = 100 ' konfig serial in

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' LEDs
    Config Led_gruen = Output
    Config Led_lcd = Output

    ' Taster
    Config Taster = Input

    ' LCD
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    Cursor Off

    Deflcdchar 0 , 32 , 32 , 21 , 14 , 4 , 4 , 4 , 4 ' Link-Zeichen
    Deflcdchar 1 , 32 , 14 , 31 , 31 , 31 , 31 , 31 , 31 ' battery-full
    Deflcdchar 2 , 32 , 14 , 31 , 17 , 17 , 31 , 31 , 31 ' battery-half
    Deflcdchar 3 , 32 , 14 , 31 , 17 , 17 , 17 , 17 , 31 ' battery empty



    'Interrupts
    Enable Interrupts

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $KAPRIG#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Led_gruen = 1 ' Led-grün OFF
    Led_lcd = 0 ' LCD-Beleuchtung ON
    Connect = 0



    ' Begrüßung
    Wait 1

    Cls
    Cursor Off
    Locate 1 , 1
    Lcd "KaprigControlRxZ1"
    Locate 2 , 1
    Lcd "KaprigControlRxZ2"
    Locate 3 , 1
    Lcd "KaprigControlRxZ3"
    Locate 4 , 1
    Lcd "KaprigControlRxZ4"


    Led_lcd = 1
    Waitms 200
    Led_lcd = 0


    Led_gruen = 0
    Waitms 100
    Led_gruen = 1
    Waitms 100
    Led_gruen = 0
    Waitms 100
    Led_gruen = 1




    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------
    Cls


    Do



    '========== hier laufen Tests ab ==========================================


    If Taster = 0 Then
    Led_lcd = 1

    Cmd = "foto"
    Locate 1 , 10 'test für sende cmd
    Lcd Cmd

    Elseif Taster = 1 Then
    Led_lcd = 0

    Cmd = ""
    Locate 1 , 10 'test für sende cmd
    Lcd " "

    End If





    '==========Rx Prüfen auf Befehlseingänge==================================

    Dollarzeicheneingang = Inkey()

    If Dollarzeicheneingang = 36 Then
    Gosub Link

    Input Datenstring Noecho '36 ist das Dollarzeichen


    Else
    Gosub No_link

    End If

    Datenkopf = Mid(datenstring , 1 , 6)

    If Datenkopf = "GROUND" Then
    Anzahl = Split(datenstring , Teildaten(1) , "#") '# Trennzeichen der Daten
    Datenstring = ""

    Gosub Lcd_anzeigen

    End If ' --> $GROUND#quit-test#7.5#24.4#gpshigh


    '==========Menüstruktur=========================== ========================













    '==========Spannung LiPo 2S messen========================================
    '(
    Spannung = Getadc(3) ' Zelle messen und berechnen
    Zellspannung_orig = Spannung * Adc_multi
    Zellspannung_orig = Zellspannung_orig * 2
    Zellspannung = Fusing(zellspannung_orig , "#.#")

    If Zellspannung_orig <= 6.4 Then ' Zellspannung unter/gleich 6,4 Volt (2x 3,2 Volt) dann...
    Gosub Lipo_saver_off
    End If
    ')

    '==========Rx Prüfen auf Befehlseingänge==================================


    Call Xbee ' kontinuierliches Senden der Parameter


    Loop

    'Eop:
    'Close #2

    End



    '----------------LCD Anzeigen---------------------------------------------------

    Lcd_anzeigen:


    Lcd_command = Teildaten(2)
    Lcd_voltage = Teildaten(3)
    Lcd_temperatur = Teildaten(4)
    Lcd_gps = Teildaten(5)

    Locate 2 , 1
    Lcd "command:" ; Lcd_command

    Locate 3 , 1
    Lcd "Voltage:" ; Lcd_voltage ; "Volt"

    Locate 4 , 1
    Lcd "Temp.:" ; Lcd_temperatur ; Chr(223) ; "C"

    Locate 4 , 14
    Lcd Lcd_gps



    Return




    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:



    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:

    Return


    '----------------XBee Link------------------------------------------------------

    Link:
    Connect = 1

    Led_gruen = 0

    Locate 1 , 1
    Lcd Chr(0)

    Return


    '----------------XBee NO Link---------------------------------------------------

    No_link:

    Connect = 0

    Led_gruen = 1

    Locate 1 , 1
    Lcd "_"

    Lcd_command = " "
    Lcd_voltage = " "
    Lcd_temperatur = " "
    Lcd_gps = " "

    Return


    '----------------Sonstiges------------------------------------------------------


    Sub Xbee

    Print "$KAPRIG" ; "#" ; Cmd


    End Sub




    Und der Code vom Luftbildsender (Atmega:

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m8def.dat"
    $crystal = 7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Pwr_all Alias Portd.2 'Abschaltung der Servos und LM2675 (5V für GPS, Video 5,8 GHz Tx)
    Pwr_gps Alias Portd.3
    Pwr_video Alias Portd.4

    Led_rot Alias Portc.5

    Pan1 Alias Portb.0 ' für L293 D
    Pan2 Alias Portd.7



    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5

    '---- Commands ----
    Dim Quittierung As String * 21
    Dim Gpshoehe As String * 10

    '---- Command empfangen ----
    Dim Cmd As Byte

    '---- GPS-String einlesen ----


    '---- Temperaturmessung ----
    Dim Temp(9) As Byte
    Dim X As Byte
    Dim Celsius As Integer
    Dim T As Single
    Dim Temperatur As String * 5

    '---- PWM für A293D ----
    Dim A As Byte


    'Dim für lesen
    Dim Dollarzeicheneingang As Byte 'Beginn des Datenstrings mit Dollarzeichen
    Dim Teildaten(3) As String * 10 ' Array mit den extrahierten Daten
    Dim Anzahl As Byte
    Dim Datenstring As String * 40
    Dim Datenkopf As String * 7


    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Config Serialin = Buffered , Size = 100 ' konfig serial in
    'Open "com1:" For Binary As #1
    'Open "COMB.7:9600,8,N,1" For Input As #2 'PB.7 = RxD SoftUART / GPS

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' Timer für PWM
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8

    ' schaltbare Ausgänge
    Config Pwr_all = Output ' GPS- und Video-Modul sowie 5 Volt Versorgung hierfür abschalten
    Config Pwr_gps = Output
    Config Pwr_video = Output

    ' Status-LED rot
    Config Led_rot = Output

    ' L293D für Servo als Motor
    Config Portb.1 = Output
    Config Pan1 = Output 'LD293
    Config Pan2 = Output

    '1wire für Temp.-Messung
    Config 1wire = Portc.0 ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von Bascom durch Software realisiert

    'Interrupts
    Enable Interrupts
    Enable Timer1

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $GROUND#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Pwr_all = 0 ' bei Systemstart Peripherie auf OFF
    Pwr_video = 0
    Pwr_gps = 0

    Led_rot = 1 ' Led_rot OFF

    Pan1 = 0 'L293D OFF
    Pan2 = 0

    'LED blinken lassen
    Led_rot = 1
    Waitms 100
    Led_rot = 0
    Waitms 100
    Led_rot = 1
    Waitms 100
    Led_rot = 0
    Led_rot = 1
    Waitms 100
    Led_rot = 0
    Waitms 100
    Led_rot = 1
    Waitms 100
    Led_rot = 0


    'nach einer Sek. Pwr_all ON
    Wait 1
    Pwr_all = 1

    'nach einer weiteren Sek. Pwr_gps ON
    Wait 1
    Pwr_gps = 1

    'nach zweit weiteren Sek. Pwr_video ON
    Wait 2
    Pwr_video = 1
    Wait 5 ' und nach 5 Sekunden Pwr_video wieder OFF
    Pwr_video = 0


    ' Begrüßung




    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------

    Do

    '========== hier laufen Tests ab ==========================================

    Quittierung = "123"
    Gpshoehe = "gpshigh"







    '==========Temperaturmessung mit DS18B20Z 1Wire============================

    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 800

    1wreset
    1wwrite &HCC
    1wwrite &HBE


    For X = 1 To 9
    Temp(x) = 1wread()
    Next


    Celsius = Makeint(temp(1) , Temp(2))

    T = Celsius / 16

    Temperatur = Fusing(t , "##.#")


    '==========Spannung LiPo 2S messen========================================

    Spannung = Getadc(3) ' Zelle messen und berechnen
    Zellspannung_orig = Spannung * Adc_multi
    Zellspannung_orig = Zellspannung_orig * 2
    Zellspannung = Fusing(zellspannung_orig , "#.#")

    If Zellspannung_orig <= 6.4 Then ' Zellspannung unter/gleich 6,4 Volt (2x 3,2 Volt) dann...
    Gosub Lipo_saver_off
    End If


    '==========Rx Prüfen auf Befehlseingänge==================================

    Dollarzeicheneingang = Inkey()

    If Dollarzeicheneingang = 36 Then

    Input Datenstring Noecho '36 ist das Dollarzeichen
    Gosub Link
    Dollarzeicheneingang = 0

    Else
    Gosub No_link

    End If


    Datenkopf = Mid(datenstring , 1 , 6)

    If Datenkopf = "KAPRIG" Then
    Anzahl = Split(datenstring , Teildaten(1) , "#") '# Trennzeichen der Daten
    Datenstring = ""
    Gosub Commands

    End If
    ' --> $KAPRIG#foto






    Call Xbee ' kontinuierliches Senden der Parameter


    Loop



    End


    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:

    If Teildaten(2) = "foto" Then

    A = 160
    Compare1a = A
    Pan1 = 0
    Pan2 = 1
    Waitms 70
    Pan1 = 0
    Pan2 = 0

    End If


    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:
    Quittierung = "LiPo-Saver!" ' Quittierung an Bodenstation
    'Print #1 , "LiPo-Saver!"
    Quittierung = "" 'Quittierung löschen
    Waitms 500

    Pwr_all = 0 ' testweise Ausgabe PWR_all = 0 --> hier: LED an!

    Disable Interrupts



    Powersave ' sleep

    Return


    '----------------Sonstiges------------------------------------------------------



    Link:

    Led_rot = 1

    Return



    No_link:

    Led_rot = 0

    Return



    Sub Xbee

    Print "$GROUND" ; "#" ; Quittierung ; "#" ; Zellspannung ; "#" ; Temperatur ; "#" ; Gpshoehe


    End Sub

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. XBEE beschaltung
    Von Thalhammer im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 15.01.2012, 13:18
  2. [ERLEDIGT] Probleme xbee
    Von Ratzfatz78 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 18.04.2011, 10:24
  3. XBee Pro und X-CTU
    Von Robo2004 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 10
    Letzter Beitrag: 14.02.2011, 19:55
  4. Xbee von Reichelt
    Von shedepe im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 12.06.2010, 22:47
  5. Xbee
    Von RobbyFan im Forum Robby RP6
    Antworten: 21
    Letzter Beitrag: 15.04.2010, 16:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress