Bitte um Prüfung meiner Schaltung

spelli

Neues Mitglied
12. Nov. 2011
68
0
0
Sprachen
kapv1.png

Hallo!

Ich bitte um Durchsicht einer Schaltung, die ich auf einer
Lochrasterplatine aufbauen möchte.

Leider konnte ich in Eagle nicht alle Bauteile (LM2675, MPX4115A,
DS18S20)finden. Daher habe ich sie durch andere schematisch dargestellt.
Ich bitte das zu entschuldigen.

Beim LM2675 fehlt noch die Beschaltung gem. Datenblatt.

Ich habe momentan Software-Probleme mit Soft- und Hardware-UART... Ich
überlege zur Not auf einen Atmega644P umzusteigen (Bascom).

-> http://www.avr-praxis.de/forum/show...tvorstellung-KAP-Luftbildfotografie-Steuerung

Hintergrund ist die Ansteuerung eines KAP-Rigs für Luftbildfotografie:
http://www.google.de/search?q=kap+rig&hl=de&client...

Hierbei funkt ein AVR per XBee/2,4 Ghz zu einem Drachen in der Luft.
Dort befindet sich eine Kamera in einer durch Servos steuerbaren
Aufhängung und ein weiterer AVR.
Unterstützt wird das ganze per GPS, 5,8 GHz Downlin, Luftdrucksensor und
Temperaturmessung.
Die Kamera, eine Canon G11, wird über das CHDK angesprochen.

Ein Servo (beide 7,4 Volt tauglich) ist umgebaut und gewährleistet die
360° Drehung.
Es soll ein 7,4 Volt 2s LiPo zum Einsatz kommen, dessen Zellen überwacht
werden...

Danke für eure Hilfe,
Christoph

P.S.: Die "Platine" wird fliegend verdrahtet... Das ganze ist ein für
mich sinnvolles Projekt, andem ich viel lernen kann/möchte bzw. bereits
gelernt habe...
 
Hi Christoph,

Leider konnte ich in Eagle nicht alle Bauteile (LM2675, MPX4115A,
DS18S20)finden. Daher habe ich sie durch andere schematisch dargestellt.
Ich bitte das zu entschuldigen.

Beim LM2675 fehlt noch die Beschaltung gem. Datenblatt.
das ist normalerweise nicht weiter schlimm wenn man denn die Signalnamen der Pins dranschreibt. Wenn nur Pinnummern da sind muß man den Schaltplan mit danebenliegenden Datenblättern durchsehen was mindestens die doppelte Zeit benötigt. Also fürs nächste mal merken ;) Notfalls einfach nen Kasten malen und die SSignalnamen/Pinbezeichnungen/Nummern dranschreiben.

P.S.: Die "Platine" wird fliegend verdrahtet... Das ganze ist ein für
mich sinnvolles Projekt
, andem ich viel lernen kann/möchte bzw. bereits
gelernt habe...
Jedes Projekt hat seinen Sinn. Niemand wird an den Projekten eines anderen rummäkeln. Und wenn man bei dem Projekt nur was lernt und es danach in die Tonne kloppt. Dann hat man wenigstens was gelernt. Es hatte also seinen Sinn. Du brauchst dich also nicht für dein Projekt rechtfertigen. Und wenn es nur ne blinkende LED ist dann ist es eben nur eine. Na und ?

Der Schaltplan ist etwas unübersichtlich aufgebaut. Viele wilde Linien hin und her. Schau mal in den FAQ-Bereich. Da gibt es kleine Tips für Eagle.

Das mit dem DS18S20 wird so nicht funktionieren. Leider stehen die richtigen Signalnamen nicht dran. Was soll der Sensor am ULN2003 ??

Der ULN2003 schaltet GND. Was sollen zweimal GND (einmal fest einmal geschaltet) am GPS-Stecker ?

Was macht der 2polige Stecker links oben (Camera) am GND und am Reset ?? Soll die Camera den Controller neustarten ?

Das Relais sieht an der Stelle etwas verloren aus. Man kann die Spule und den Kontakt auch räumlich trennen. Die Verbindung bleibt anhand der Bauteilbezeichnungen.

Der Drucksensor MPX4115 wäre mit nem Meßverstärker (Doppel-OPAmp) für den Luftdruck auch etwas besser bedient. So hat man relativ kleine Spannungsänderungen wenn sich der Luftdruck (die Höhe) ändert. Das ist schlecht auszuwerten (nicht unmöglich aber nicht optimal).

Wenn ich mir das so ansehe dann ist der Mega8 entweder recht dünn (oder zu klein / zu wenig Pins) oder du hast die Belegung mit Pheripherie falsch geplant.

Den ULN2003 würde ich rausschmeißen. Der scheint nur für das An-/Abschalten der Pheripherie zu sein um Strom zu sparen. Das würde ich anders machen. Entweder du schaltest die Pheripherie auf einmal an und machst die Messungen, dann brauchst du nur einen MOSFET für alles. Oder du schaltest die Sensoren nach und nach ein und wieder aus. Dann könnte man über einen Binär-zu-Dezimal-Decoder und nen paar MOSFETs Pins am Atmel sparen und der MOSFET kann das besser (bleibt nicht so viel Spannung hängen).

Außerdem !!! Manche Bausteine mögen es garnicht das man ihnen nur die Betriebsspannung abschaltet. Dann versorgen die sich manchmal über die restlichen Pins fremd. Da sind schon LCDs dran gestorben. Da solltest du dir also mal was überlegen.

Soweit erstmal. Das war nun etwa ne halbe Stunde Arbeit mit dem Schaltplan und ich bin noch nichtmal ins Detail gegangen. Also beim Programm etwas Gedult haben ... ;) :rolleyes:

Gruß
Dino
 
Hallo Dino,

danke für deine Infos/Zeit!

Das mit den Bauteilen/Bezeichnungen merke ich mir!
Den ULN2003 wollte ich nehmen, da ich dadurch meiner Meinung nach Bauteile einspare.
Die Beschaltung habe ich dann natürlich eindeutig falsch verstanden. Ich möchte dadurch GPS und Video abschalten können.
Den Rest des Arrays wollte ich vorsorglich beschalten.
Der DS18S20 sollte eigentlich auch abschaltbar sein. Ist aber quatsch.
Die Camera PINs sollten einfach nur ein digitaler Output sein. Ich hätte dann ja einen reset durchgeführt. Jetzt habe ich das auch richtig verstanden...
Bzgl. des MPX4115 und eines Doppel-OPAmp: könntest du mir hierzu etwas empehlen? Es gibt so viele Bauteile, ich weiß nie, welches da das richtige ist!?

Ich plane das neu... vielleicht setzte ich mich auch mal ran und schaue, wie das mit dem Bauteile erstellen geht!

Danke!
 
Hallo,

Den ULN2003 wollte ich nehmen, da ich dadurch meiner Meinung nach Bauteile einspare.
Die Beschaltung habe ich dann natürlich eindeutig falsch verstanden. Ich möchte dadurch GPS und Video abschalten können.
Den Rest des Arrays wollte ich vorsorglich beschalten.
der ULN2003 ist mit Bipolaren Transistoren und hat dadurch ne Menge Verlust im durchgeschalteten Zustand. Deine Sensoren erhalten dann nur noch so 4,5-4,8V von den 5V. Das können normale LogicLevel-MOSFETs besser. Außerdem kannst du die besser auf der Platine verteilen und da hinsetzen wo du sie brauchst.

Der DS18S20 sollte eigentlich auch abschaltbar sein. Ist aber quatsch.
sehe ich genauso. Der verbraucht so wenig das es sich nicht lohnt ihn abzuschalten.

Bzgl. des MPX4115 und eines Doppel-OPAmp: könntest du mir hierzu etwas empehlen? Es gibt so viele Bauteile, ich weiß nie, welches da das richtige ist!?
schau mal hier in den Bereich "Messen physikalischer Größen" da sollte irgendwas zu finden sein. Ich weiß das hier schon öfters passende Meßverstärker durch Forum gewandert sind. Da sollte was zu finden sein.

Ich plane das neu... vielleicht setzte ich mich auch mal ran und schaue, wie das mit dem Bauteile erstellen geht!
Bauteile muß man nicht unbedingt erstellen. Hab ich auch noch nicht gemacht. :rolleyes:
Es gibt bei CAD-Soft noch etliches an Bibliotheken zum nachladen. Such da mal. Da ist ne Menge zu finden. Die sind sogar umsonst.

Eine vernünftige gute Planung kann einem die hälfte der Arbeit ersparen und das Leben wesentlich erleichtern. Also laß dir bei der Planung etwas mehr Zeit und freu dich dann über eine einfachere Programmierarbeit.

Wenn du Tips brauchst dann melde dich einfach hier im Forum. Vorher fragen ist besser als nachher ändern.

Gruß
Dino
 
Hallo Dino,

vielen Dank für deine ausführlichen Infos. Ursprünglich hatte ich für den ULN2003 einen BC337 eingeplant. Du rätst mir zu LogicLevel-MOSFETs. Das verstehe ich zu einem gewissen Punkt. Ich habe immer wieder das Problem, dass es so viele Bauteile gibt. Wie finde ich denn das passende Bauteil?
Ich bestelle fast ausschließlich bei reichelt. Ich benötige ja nur einen (Drain- ?) Schaltstrom von ca. max. 500 mA?

Man kommt vermutlich nicht um die einzelnen Datenblätter herum?

Danke,
Christoph
 
Hi Christoph,

Ich habe immer wieder das Problem, dass es so viele Bauteile gibt. Wie finde ich denn das passende Bauteil?
Ich bestelle fast ausschließlich bei reichelt. Ich benötige ja nur einen (Drain- ?) Schaltstrom von ca. max. 500 mA?
manchmal sucht man stundenlang nach einem passenden Bauteil und wühlt 20-50 Datenblätter durch. Das ist nunmal so.

Ich bestelle meißt auch bei Reichelt. Darum sollte wohl was zu finden sein.

Für n-Kanal LL-MOSFETs verwende ich im Moment gerne die IRLU2905 und IRLU3410.
Die BS170/BS250 sind da etwas schwachbrüstiger (zu schwach für deine Anwendung).
nach langer Suche habe ich als p-Kanal MOSFET den IRFU9024N gefunden. Der ist aber leider kein LL-MOSFET.
Die p-Kanal sind echt dünn gesät. Da suche ich zur Zeit auch noch ein wenig. Mal sehen ...
Es sollen ja auch nicht unbedingt dicke Brocken im TO220-Gehäuse sein. Die TO251AA sind da schön schnuckelig.

Die BC337 als bipolare Transistoren würde ich auf jeden Fall auch nur bis 100mA belasten. Da drüber wirds dann schnell eng.

Gruß
Dino
 
Guten morgen bei -3 Grad (naja, ich sitz im warmen)!

danke für die Bauteilebezeichnung! Dann kann ich mir eigentlich auch mein Relais sparen!

Gruß
Christoph
 
danke für die Bauteilebezeichnung! Dann kann ich mir eigentlich auch mein Relais sparen!
ich glaube ich sollte mal nen FAQ-Beitrag erstellen in dem sortiert nach Funktionen einige wichtige Typenbezeichnungen (evtl sogar mit Datenblättern) drin stehen. Dann sucht man nicht so lange. Bei mir zeigt der Dateiexplorer im Moment beim Datenblatt-Verzeichnis über 770MB mit mehr als 3900 Dateien an :rolleyes:
 
Hallo,

sowas wäre nicht schlecht!

Der AD623 scheint als Meßverstärker für den Luftdrucksensor geeignet zu sein! Ist es richtig, dass der einfach zwischen geschaltet wird?

Bzgl. des AVR ist der Atmega 128 wirklich interessant. Habe schon einige Atmega88 Schaltungen aus dem Internet in SMD nachgelötet.
Ich bin jetzt stark am überlegen, ob ich nicht eine Schaltung zeichnen sollte, die in SMD aufgebaut ist. Davon würde ich mir eine Platine machen lassen. Die kann ruhig etwas kosten. Wichtig ist, dass meine Schaltung klein bleibt.
Nur bei ca. 10 € pro Atmega128 darf mir halt kein Fehler unterlaufen...

Weiterhin finde ich den IRLU2905 interessant. Einen als Power off für die Schaltung und zwei für das individuelle Schalten...

Gruß
Christoph

Das ganze soll mit 7,3728 Mhz laufen, um bzgl. der Baud Fehler zu vermeiden.
 
Hi Christoph,

Der AD623 scheint als Meßverstärker für den Luftdrucksensor geeignet zu sein! Ist es richtig, dass der einfach zwischen geschaltet wird?
ähhh ... einfach ?? Nen paar Widerstände und ein wenig Rechnen wird da wohl noch nötig sein. Außerdem würde ich ne stabilisierte Spannung für den Analogteil empfehlen die vom Digitalteil durch ein wenig Filterung getrennt ist. So eben mal einfach dazwischen ist nun auch nicht :rolleyes:

Bzgl. des AVR ist der Atmega 128 wirklich interessant. Habe schon einige Atmega88 Schaltungen aus dem Internet in SMD nachgelötet.
Ich bin jetzt stark am überlegen, ob ich nicht eine Schaltung zeichnen sollte, die in SMD aufgebaut ist. Davon würde ich mir eine Platine machen lassen. Die kann ruhig etwas kosten. Wichtig ist, dass meine Schaltung klein bleibt.
Nur bei ca. 10 € pro Atmega128 darf mir halt kein Fehler unterlaufen...
Hast du dir schonmal Dirk sein Mega128-USB-Modul aus dem Shop angesehen ? Kann ich empfehlen (nein ich krieg nix dafür). Und mit den ganzen Komponenten drauf ist der Preis angemessen. Außerdem ist es verdammt klein :cool: und du mußt nicht an den Pins mit 0,8mm Abstand rumlöten und kannst bei nem Ausfall des Prozessors das Modul einfacher tauschen als einen eingelöteten Mega128. Wer weiß was beim basteln alles über den Jordan geht ... :rolleyes:

Gruß
Dino
 
Hallo!

Ja, ich meinte natürlich die Beschaltung gem. Datenblätter...

Außerdem würde ich ne stabilisierte Spannung für den Analogteil empfehlen die vom Digitalteil durch ein wenig Filterung getrennt ist

Wärst du so nett und könntest mir das näher erklären?

Das USB-Modul ist interessant... Auch wenn ich die USB-Schnittstelle nicht unbedingt bräuchte... Aber man kann ja nie wissen!

Schönen Abend,
Christoph
 
Hi,

Wärst du so nett und könntest mir das näher erklären?
ich versuchs mal ...

Bei digitalen Schaltungen hast du immer irgendwelche Störungen auf der Betriebsspannung. Das können kurze Einbrüche wegen Lastschwankungen sein (ein Chip hat grad etwas mehr zu tun und zieht mehr Strom) oder es sind irgendwelche Störfrequenzen auf der Betriebsspannung die zB von den Taktsignalen im Megahertzbereich oder von schnellen Schaltflanken herrühren.

Wenn diese Störungen bei einer Analogschaltung auf der Betriebsspannung liegen dann kommen diese Störungen auch in dein Nutzsignal das du eigentlich möglichst sauber halten willst.

Darum sollte man den Analogteil und den Digitalteil einer Schaltung möglichst aus getrennten Spannungstabilisatoren versorgen (GND muß aber am Netzteil verbunden sein). Wenn das nicht geht dann sollte man die Versorgung von Analog- und Digitalteil duch Filter miteinander koppeln. Wie sowas aussehen kann siehst du zB im Datenblatt von Atmel. Die Versorgung des AD-Wandlers (AVcc) und die Versorgung des Digitalteils (Vcc) sind über eine Filterdrossel und Keramikkondensatoren auf beiden Seiten miteinander gekoppelt um die Störfrequenzen durch die Drossel zu blocken.

Außerdem sollte man Teile einer Analogschaltung die eine Meßgröße liefern (zB Temperatursensoren, Drucksensoren, ...) mit einer besonders stabilen Spannung versorgen. Wenn diese Sensoren nämlich nicht intern nochmal eine Referenzspannung erzeugen, dann schlägt jede Spannungsänderung der Versorgungsspannunng des Sensors direkt auf das Meßsignal durch.

Wenn man nun aber einen Sensor mit einer Spannung versorgt, die auch als Referenzspannung des AD-Wandlers verwendet wird, dann sind die Änderungen der Referenz und des Messignals durch eine Spannungsänderung der Versorgung beide gleichmäßig und gleichen sich dadurch wieder aus.

Wie du siehst muß man bei der Erstellung von Analogschaltungen ein wenig Umsicht walten lassen. Wenn man aber einmal in die Abläufe eingestiegen ist, dann kann man damit auch einige Fehler auf der Digitalseite erklären die einem vorher Rätsel aufgegeben haben.

Das sollte erst einmal als Erklärung reichen (hoffe ich) ;)

Gruß
Dino
 
Hallo!

Vielen Dank für deine ausführliche Antwort. In Bezug auf analoge (Be)Schaltungen habe ich das verstanden.
Wenn ich es richtig verstehe, muss also entweder die analoge Schaltung gesondert gespeist werden, sprich eigene 5 Volt oder:
Ich gebe die 5 Volt (mit der die analoge Schaltung, hier: Luftdrucksensor, versorgt wird) auf ARef?

Dann würde sich aber immer noch das "Messergebnis" bei Spannungsveränderung verändern... -> dann Kompensation durch Messreihe?

Danke,
Christoph
 
Hi Christoph,

Wenn ich es richtig verstehe, muss also entweder die analoge Schaltung gesondert gespeist werden, sprich eigene 5 Volt oder:
Ich gebe die 5 Volt (mit der die analoge Schaltung, hier: Luftdrucksensor, versorgt wird) auf ARef?

Dann würde sich aber immer noch das "Messergebnis" bei Spannungsveränderung verändern... -> dann Kompensation durch Messreihe?
so ähnlich. Die Richtung paßt schon.

Du mußt dir die Spannungen wie ein Gummiband vorstellen. Wenn du zB die Versorgungsspannung des Drucksensors und die Referenzspannung des AD-Wandlers gleichsetzt oder die Referenzspannung durch einen einfachen Spannungsteiler aus der Versorgungsspannung des Drucksensors erzeugst, dann bleibt das Verhältnis immer gleich so als ob du die Betriebsspannung auf der einen Seite des Gummibandes aufmalst und die Referenzspannung auf der anderen Seite. Wenn du nun am Gummiband ziehst dann verändert sich beides. Das Verhältnis bleibt aber immer gleich.

Am ARef würde ich lediglich besondere Referenzspannungen anschließen. Zum Beispiel spezielle Referenzspannungsquellen. Im Atmel gibt es einen Multiplexer für die Referenzspannung die am AD-Wandler anliegt. Den kannst du auch auf AVcc umschalten. Du könntest also zB ne Filterdrossel (so 10..22µH aber möglichst niederohmig!!) zwischen Vcc (Digitalteil) und Avcc (Analogteil) setzen. Dann versorgst du den Drucksensor und den OPAmp (Meßverstärker) aus der Spannung die am AVcc anliegt. Aber nicht zuviel Strom ziehen! weil sonst ne Menge Spannung an der Drossel abfällt. Beide Seiten (Vcc und AVcc) gut mit Keramiks (100nF) und Elkos (47..100µF) sieben. So würde ich es machen. Versuch es mal auf nem Steckbrett aufzubauen und probier mal ein wenig rum.

Gruß
Dino
 
Hallo,

ich warte nun auf einige Komponenten.

Inwzischen ist ein 20*4 LCD eingetroffen:
http://www.ebay.de/itm/190341284287?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
Datenblätter: http://www.egochina.net.cn/eBay/Download/SPLC780D.pdf und http://www.egochina.net.cn/eBay/Download/JHD204A.pdf

Leider zeigt das Display auf allen vier Zeilen nur komische "fehlerhafte" Zeichen an!

Ein 16*2 LCD, was ich vorher angeschlossen hatte funktioniert jetzt auch nicht mehr...

Kann ja nur ein Problem auf meinem Steckboard sein, allerdings habe ich nicht viel verändert:

Code:
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = [B]20 * 4[/B]
Cls
Cursor Off

Code:
Locate 1 , 1
Lcd "KaprigControlRx [B]Z1"
Locate 2 , 1
Lcd "KaprigControlRx Z2"
Locate 3 , 1
Lcd "KaprigControlRx Z3"
Locate 4 , 1
Lcd "KaprigControlRx Z4[/B]"

Wait 1
Cls

Mehr habe ich nicht geändert. Als ich das Display das erste Mal angeschlossen hatte, hatte ich noch das Config LCD = 16 * 2 drin.
Da wurde auch prompt die erste Anzeige "KaprigControlRx" angezeigt...
 
Hi Spelli,

Leider zeigt das Display auf allen vier Zeilen nur komische "fehlerhafte" Zeichen an!

Ein 16*2 LCD, was ich vorher angeschlossen hatte funktioniert jetzt auch nicht mehr...
hast du was am Takt (Quarz, Systemtaktangabe in Bascom, ... ) geändert ?
Wenn nicht, dann schreib doch an der Stelle wo bei dir im Programm ...
" $crystal = 16000000 "
.. oder was ähnliches steht (also Bascom der Systemtakt mitgeteilt wird) eine etwas höhere Taktrate rein (Ohne den Quarz zu ändern).
Wenn man Bascom eine etwas höhere Taktrate als in Wirklichkeit vorgaukelt, werden die internen Abläufe etwas geschmeidiger (langsamer) und wenn es tatsächllich Timing-Probleme sind sollte das Display dann laufen.

Gruß
Dino
 
Hallo,

mit diesem Code habe ich keine Probleme:

Code:
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600

Enable Interrupts

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


Locate 1 , 1
Lcd "KaprigControlRxZ1"
Locate 2 , 1
Lcd "KaprigControlRxZ2"
Locate 3 , 1
Lcd "KaprigControlRxZ3"
Locate 4 , 1
Lcd "KaprigControlRxZ3"
Wait 2

Cls

Do

Loop
End


Der alt bekannte Code macht irgendwo Probleme:


Code:
' Sendesyntax to GROUND: §GROUND#quittierung#zellspannung1#zellspannung2#gpshoehe#nn#
'
' Sendesyntax to KAPRIG: %KAPRIG#commands#nn#nn#nn#nn#



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


'Alias
Pwr_all Alias Portb.1                                       'Abschaltung der Servos und LM2675 (5V für GPS, Video 5,8 GHz Tx)
Pwr_video Alias Portb.2                                     ' Abschaltung für 5,8 GHz Tx
Pwr_gps Alias Portb.3                                       ' Abschaltung für GPS
Usb Alias Portb.4                                           ' Remote für Canon G11 -> Script für CHDK


'Variablen
Dim Spannung1 As Word
Dim Spannung2 As Word
Dim Zellspannung1_orig As Single
Dim Zellspannung2_orig As Single
Dim Zellspannung1 As String * 5
Dim Zellspannung2 As String * 5

Dim Quittierung As String * 21
Dim Gpshoehe As String * 5

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 * 5

Dim Befehls_zeichen As Byte
Dim Befehlsdaten As String * 101
Dim Befehls_header As String * 7
Dim Befehls_anzahl As Byte
Dim Befehls_teilstring(6) As String * 21

Const Adc_multi = 0.0048828125                              ' = 5.0 / 1024.0 -> ADC auflösen
Pwr_all = 1                                                 ' bei Systemstart Peripherie auf ON
Pwr_video = 1
Pwr_gps = 1


'Portkonfiguration / Initialisierung
Config Pwr_all = Output
Config Pwr_video = Output
Config Pwr_gps = Output
Config Usb = Output


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

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

Config Servos = 2 , Servo1 = Portb.5 , Servo2 = Portb.7 , Reload = 10       ' Servos definieren

Open "COMD.7:9600,8,N,1" For Input As #1                    'PB.1 = RxD SoftUART


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


Enable Interrupts


Print "KaprigPRINT"

Locate 1 , 1
Lcd "KaprigControlRxZ1"
Locate 2 , 1
Lcd "KaprigControlRxZ2"
Locate 3 , 1
Lcd "KaprigControlRxZ3"
Locate 4 , 1
Lcd "KaprigControlRxZ3"
Wait 1
Cls


Do

   '==========Überwachung von Zelle1 und Zelle2===============================

   Spannung1 = Getadc(0)                                    ' Zelle1 messen und berechnen
   Zellspannung1_orig = Spannung1 * Adc_multi
   Zellspannung1 = Fusing(zellspannung1_orig , "#.#")


   Spannung2 = Getadc(1)                                    ' Zelle2 messen und berechnen
   Zellspannung2_orig = Spannung2 * Adc_multi
   Zellspannung2 = Fusing(zellspannung2_orig , "#.#")


   If Zellspannung1_orig <= 3.2 Then                        ' Zellspannung1 unter/gleich 3,2 Volt dann...
      Gosub Lipo_saver
   End If

   If Zellspannung2_orig <= 3.2 Then                        ' Zellspannung2 unter/gleich 3,2 Volt dann...
      Gosub Lipo_saver
   End If

   Start Adc                                                ' möglicherweise gstoppten ADC ("Lipo_saver") wieder starten





   '==========LCD-Darstellung================================================

   Locate 1 , 1
   Lcd "Z1: " ; Zellspannung1 ; " V"
   Locate 1 , 1
   Lcd "Z2: " ; Zellspannung2 ; " V"


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

   Befehls_zeichen = Inkey()                                ' Zeichen einlesen

   If Befehls_zeichen = 37 Then Input , Befehlsdaten Noecho ' ist "%"  vorhanden, dann Daten/HardUART einlesen >> Befehlsdaten

      Befehls_header = Mid(befehlsdaten , 1 , 6)            'ersten 6 Zeichen nach Befehls_header einlesen
      If Befehls_header = "KAPRIG" Then                     'wenn KAPRIG Befehlssatz, dann

         Befehls_anzahl = Split(befehlsdaten , Befehls_teilstring(1) , "#")       'aus Befehlsdaten in 6 Teilstrings/Arrays, getrennt durch "#", aufteilen
         Befehlsdaten = ""                                  'befehlsdaten leeren
         Gosub Commands                                     ' Auswertung der Befehle/Teilstrings in Subroutine "commands"

      End If


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

   Gps_zeichen = Inkey(#1)                                  ' Zeichen einlesen

   If Gps_zeichen = 36 Then Input #1 , Gpsdaten Noecho      ' ist "$"  vorhanden, dann Daten/SoftUART #1 einlesen >> Gpsdaten

      Gps_header = Mid(gpsdaten , 1 , 5)                    'ersten 5 Zeichen nach Gps_header einlesen
      If Gps_header = "GPGGA" Then                          'wenn GPGGA Befehlssatz, dann

         Cls
         Gps_anzahl = Split(gpsdaten , Gps_teilstring(1) , ",")       'aus Gpsdaten in 14 Teilstrings/Arrays, getrennt durch ",", aufteilen
         Gps_anzahl = Split(gps_teilstring(10) , Gps_hoehenteilstring(1) , ".")       'Teilstring 10, Höhe xxx.xx, aufteilen in Wert vor dem "."
         Gpsdaten = ""                                      'gpsdaten leeren

         Gpshoehe = Gps_hoehenteilstring(1)                 'gpshoehe = Höhe in Metern vor dem Komma über Meeresspiegel

         Locate 1 , 9
         Lcd Gpshoehe

      End If


   Call Xbee                                                ' kontinuierliches Senden der Parameter

Loop
End



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

Commands:
   Select Case Befehls_teilstring(2)

     Case "TAKEPHOTO"                                       ' Teilstring(2) auswerten auf "TAKEPHOTO"
     Locate 2 , 1
     Lcd Befehls_teilstring(2)
     Pwr_all = 0
     Waitms 500
     Pwr_all = 1
     Quittierung = "Photo is taken"
     Waitms 500
     Quittierung = ""
     Cls

     Case ""
     Case ""

   End Select



   Select Case Befehls_teilstring(3)                        ' hier optionale Auswertung von weiteren Teilstrings

     Case ""

     Locate 2 , 1
     Lcd Befehls_teilstring(3) ""

   End Select

Return



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

Lipo_saver:
   Quittierung = "LiPo-Saver!"                              ' Quittierung an Bodenstation
   Stop Adc                                                 ' ADC abschalten um Strom zu sparen
   Stop Ac                                                  ' AC abschalten um Strom zu sparen
   Pwr_all = 0                                              ' testweise Ausgabe PWR_all = 0 --> hier: LED an!
   Locate 2 , 1
   Lcd "LiPo-Saver!"
   Waitms 500
   Quittierung = ""                                         'Quittierung löschen
   Cls

Return



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

Sub Xbee

    Print "§GROUND#" ; Quittierung ; "#" ; Zellspannung1 ; "#" ; Zellspannung2 ; "#" ; Gpshoehe ; "#" ; "#"

End Sub

Bzgl. der LCD Geschicht ist doch aber alles identisch?
 
Hallo!

Habe einen neuen Schaltplan erstellt. Ich habe mich allerdings noch nicht an die Hardware des MPX4115A herangetraut.

Schaltplan:
- MEGA128-USB Modul
- RS232 (UART0) XBee 2,4 GHz
- RS232 (UART1) GPS
- Video 5,8 GHz
- Temp. DS18B20Z
- Luftdruck MPX4115A mit AD623R
- 1x Servo Original
- 1x Servo "hacked" mit L293D
- 1x Summer

Ich hoffe, dass mein Schaltplan übersichtlich geblieben ist!

Danke,
Christoph

als PNG-File

als Eagle-File
 
Hi,

Ich hoffe, dass mein Schaltplan übersichtlich geblieben ist!
da kann man ja ne Tapete draus machen :D
ich habs mal etwas verkleinert und hier reingepackt. Ich hoffe es ist dir recht ...
Supply:spelli_kap1_Supply.png µC:Anhang anzeigen spelli_kap1_uC.png

Habe einen neuen Schaltplan erstellt. Ich habe mich allerdings noch nicht an die Hardware des MPX4115A herangetraut.
also den AD623 nur als Impedanzwandler zu verwenden ist ja ... Perlen vor die Säue :p

Sieh dir doch mal die Spannungen im Datenblatt des MPX4115 an.
Anhang anzeigen MPX4115A_Motorola_Luftdruck.pdf
also laut Wikipedia Luftdruck sieht es folgermaßen aus ...
- Der mittlere Luftdruck der Erdatmosphäre beträgt auf Meereshöhe 1013,25 hPa
- Der höchste Luftdruck in Deutschland wurde mit 1060,6 hPa am 23. Januar 1907
in Putbus auf der Insel Rügen gemessen, der niedrigste mit 954,9 hPa am
27. November 1983 in Emden. Der höchste Luftdruck in Deutschland wurde mit
1060,6 hPa am 23. Januar 1907 in Putbus auf der Insel Rügen gemessen, der
niedrigste mit 954,9 hPa am 27. November 1983 in Emden


Also bewegen wir uns grob zwischen 950 und 1065hPa => 95,0 ... 106,5kPa
Das ergibt eine Ausgangsspannung von 2,5 ... 4,5V des Sensors.
Wenn man nun dem OPAmp am negativen Anschluß eine Spannung von 2V verpaßt dann bekommt man am Ausgang bei einer Verstärkung von 1 also eine Spannung von 0,5 ... 2,5V .
Da der Luftdruck mit zunehmender Höhe abnimmt - du willst ja eine Höhenmessung machen - benötigt man also eher den unteren Bereich. Also würde ich um den Faktor 2 Verstärken. Dann bekommst du also eine Ausgangsspannung von 1V ... 5V und hast noch eine Reserve bis runter auf etwa 520hPa bei der die Spannung dann am Ausgang des OPAmps auf 0V liegt. Durch die Verstärkung hast du deine Auflösung (Genauigkeit) aber mal eben verdoppelt.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)