Forum: Mikrocontroller und Digitale Elektronik Bascom - Servo, Temperatursensor und Co.


von Nicho F. (nichof)


Angehängte Dateien:

Lesenswert?

Hallo.

Wage mich gerade für ein Projekt an Bascom ran und mache erste Schritte.
Es wäre nett, wenn Ihr mal schauen könntet, ob ich auf dem richtigen Weg 
bin oder wo noch etwas fehlt.
Im Anhang der zugehörige Schaltplan.

1
'Lüftung V2
2
3
4
'               ---------------ATMega8----------------
5
'                             +---U---+
6
'                (-RESET) PC6 |1    28| PC5 (ADC5/SCL)   =LM75 Sensor
7
'                   (RXD) PD0 |2    27| PC4 (ADC4/SDA)   =LM75 Sensor
8
'                   (TXD) PD1 |3    26| PC3 (ADC3)
9
'Display RS=       (INT0) PD2 |4    25| PC2 (ADC2)
10
'Display E=        (INT1) PD3 |5    24| PC1 (ADC1)
11
'Display D4=     (XCK/T0) PD4 |6    23| PC0 (ADC0)
12
'                         VCC |7    22| GND
13
'                         GND |8    21| AREF
14
'Quarz=     (XTAL1/TOSC1) PB6 |9    20| AVCC
15
'Quarz=     (XTAL2/TOSC2) PB7 |10   19| PB5 (SCK)
16
'Display D5=         (T1) PD5 |11   18| PB4 (MISO)
17
'Display D6=       (AIN0) PD6 |12   17| PB3 (MOSI/OC2)
18
'Display D7=       (AIN1) PD7 |13   16| PB2 (-SS/OC1B)   =MOSFET für Lüfter
19
'Display RW=       (ICP1) PB0 |14   15| PB1 (OC1A)       =Servo Signal
20
'                             +-------+
21
22
'Beschreibung:
23
'Bei Inbetriebnahme wird Servo in Startposition 1 gefahren.
24
'LM75 misst Temperatur und gibt sie in Display aus.
25
'Bei Überschreitung von 40°C fährt Servo langsam in Position 2 und
26
'MOSFET wird angesteuert (Lüfter starten).
27
'Wenn 30° unterschritten werden, fährt Servo langsam in Position 1
28
'und MOSFET lässt Lüfter stoppen.
29
30
31
32
'Definition Controller
33
$regfile = "m8def.dat"
34
35
'Taktfrequenz Quarz 16MHz
36
$crystal = 16000000
37
38
'Reservierter Speicher
39
$hwstack = 100
40
$swstack = 100
41
$framesize = 100
42
43
'Baudrate der UART
44
$baud = 9600
45
46
47
'### LM75 Sensor und Display ###
48
49
Config Lcd = 16 * 1
50
51
Dim X As Byte
52
Dim Y As Byte , Slave As Byte
53
Config Sda = Portc.4
54
Config Scl = Portc.5
55
56
Do
57
 Slave = &H91
58
I2creceive Slave , X
59
60
Waitms 10
61
62
I2creceive Slave , Y
63
If Y > 128 Then Y = 0 Else Y = 5
64
Lcd "*  " ; X ; "," ; Y ; " °C  *"
65
Waitms 300
66
Cls
67
68
Loop
69
70
71
72
'### Servo ###
73
74
Config Pinb.1 = Output
75
Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
76
Declare Sub Main
77
Enable Interrupts
78
79
Ddrd = &B10000000
80
81
Const Startwert = 100
82
Const Endwert = 200
83
84
85
Call Main()
86
End
87
88
Sub Main
89
    Local Ap As Byte
90
91
    'Startposition einnehmen
92
    Servo(1) = Startwert
93
    Waitms 1000
94
95
    'Bewegungsablauf
96
    Do
97
       If X >= 40 Then
98
          For Ap = Startwert To Endwert Step 20
99
               Servo(1) = Ap
100
               Waitms 1000
101
       End If
102
103
       Next
104
105
106
       If X <= 30 Then
107
          For Ap = Endwert To Startwert Step -20
108
            Servo(1) = Ap
109
            Waitms 1000
110
       End If
111
112
       Next
113
114
    Loop
115
End Sub
116
117
118
119
'### MOSFET ###
120
121
Config Pinb.2 = Output
122
123
Do
124
   If X >= 40 Then
125
      Portb.2 = 1
126
      Waitms 10
127
   End If
128
129
   If X <= 30 Then
130
      Portb.2 = 0
131
      Waitms 10
132
   End If
133
Loop

: Verschoben durch Moderator
von BASCOM User (Gast)


Lesenswert?

Hallo Nicho,

schön, dass Du Dich mit dem Thema beschäftigst.

Aber aller anfang ist schwer ...

Ich fang mal so an:

1. Man zeichnet die Masse im Schaltplan nicht wild herum. Das nimmt jede
   Übersichtlichkeit und verwirrt. Nimm das Symbol und setze es an die
   benötigten Stellen.

2. Was macht der 20R Widerstand zwischen VCC und GND?
   Ist das eine Grundlast fürs Netzteil? Ist der R gut gekühlt?

3. Jeder BASCOM Code nach dem erste "loop" wird nicht augeführt.
   Da musst Du nochmal ran.

4. Es gibt nur eine Hauptschleife die Du mit do ... loop machen 
solltest.
   Du hast zu viele im Code, wo Du nie mehr rauskommst.

5. Das LCD ist nicht im Schaltplan.

6. AREF ist nicht beschaltet.

7. Mach im BASCOM Code die Konfigurationen alle am Anfang und nicht 
mitten
   im Code.

Das wars erstmal fürs Erste ...

von Karl H. (kbuchegg)


Lesenswert?

8. Zu glauben man könne ein größeres Programm schreiben, indem man 
mehrere kleinere Progamme in eine gemeinsame Datei zusammenkopiert, ist 
meistens ein Trugschluss. Grundsätzlich schreibst du ein neues Programm! 
Wenn du in diesem Programm Teile von vorhergehenden anderen Programmen 
benutzen kannst, dann ist das schön, bedeutet aber nicht, dass du nur 
Copy&Paste machen musst.
Wie gesagt: Du schreibst erst mal ein neues Programm, d.h. du musst dir 
dafür die passende Logik überlegen und ein Konzept zurecht legen. 
Älteren Code kannst du als Quelle nehmen, um dir die eine oder andere 
Tipparbeit zu ersparen, mehr aber auch nicht. Aber einfach nur 
zusammenkopieren - das wird nichts.

von Karl H. (kbuchegg)


Lesenswert?

9. Waitms ist selten die Lösung - aber oft das Problem. Waitms
   ist gut für kleine Spielzeugprogramme, wenn man etwas testen will
   ohne sich die Arbeit machen zu wollen, eine ordentliche Zeitsteuerung
   aufzubauen, weil es bei dem Test darum geht eine bestimmte
   Funktionalität zu testen und die Zeitsteuerung nur Mittel zum Zweck
   ist, diese Funktionalität in einigermassen regelmässigen
   Zeitabständen in diesem Standalone-Test auszulösen.
   Aber für feldtaugliche Programme ausserhalb des Testgeländes ist es
   nicht zu gebrauchen. Zeitsteuerungen macht man mit einem Timer.

von Nicho F. (nichof)


Lesenswert?

Danke für die Antworten.

2. Genau, Grundlast für das NT.
5. Sollte nur im Code vorgemerkt sein für spätere Nachrüstung, habe ich 
vergessen zu erwähnen.
6. Wie muss AREF denn beschaltet sein?

Zu den restlichen Punkten:
Setze mich nochmal mit auseinander, danke.

von Karl H. (kbuchegg)


Lesenswert?

Nicho F. schrieb:
> Danke für die Antworten.
>
> 2. Genau, Grundlast für das NT.

1/4 Ampere als Grundlast? Dir ist hoffentlich klar, dass dieser 
Widerstand in erster Linie eine prima Heizung ist. An diesem Widerstand 
werden 1.25 Watt verbrutzelt. Aber auch nur, wenn du einen geeigneten 
dafür benutzt. Ein üblicher 1/8 Watt Widerstand wird da schnell heiß, 
ehe er dann verkohlt.

Was ist denn das für ein Netzteil? Besorg dir doch was ordentliches. Und 
sei es nur ein popeliger 7805 an einem noch popeligerem 9V 
Steckernetzteil.

> 6. Wie muss AREF denn beschaltet sein?

Einfach nur ein 100n Kondensator von AREF nach Masse.

von Nicho F. (nichof)


Lesenswert?

Widerstand habe ich extra aus diesem Grund einen 2W Metallschicht 
genommen.
Strom wird aus dem PC-Netzteil gewonnen.

von Karl H. (kbuchegg)


Lesenswert?

Nicho F. schrieb:

> Strom wird aus dem PC-Netzteil gewonnen.

Ah ja.
Also das ungeeigneste, was man sich als Bastelnetzteil vorstellen kann.
Na dann. Gut brutzel.

von Nicho F. (nichof)


Lesenswert?

Hier wurde mir aber gesagt, die Schaltung sei so in Ordnung.

Beitrag "Schaltung ATmega8 (Servoansteuerung, Temperatur)"


Karl Heinz Buchegger schrieb:
> Na dann. Gut brutzel.

Vielen Dank für den zynischen Kommentar, so macht der Einstieg in die 
Materie richtig Spaß.

von Karl H. (kbuchegg)


Lesenswert?

Nicho F. schrieb:
> Hier wurde mir aber gesagt, die Schaltung sei so in Ordnung.
>
> Beitrag "Schaltung ATmega8 (Servoansteuerung, Temperatur)"
>
>
> Karl Heinz Buchegger schrieb:
>> Na dann. Gut brutzel.
>
> Vielen Dank für den zynischen Kommentar, so macht der Einstieg in die
> Materie richtig Spaß.

Ich sach mal so:
Man kann natürlich eine Schwerlastwinde dazu benutzen, um das Sofa aus 
dem Garten in den ersten Stock zu hieven. Aber wenn man dabei einen 
Fehler macht, dann zieht die Winde beinhart das Sofa durch den 
Fensterstock durch und hinterlässt dabei Kleinholz, ehe die "Da 
blockiert irgendwas" Sicherung der Winde anspringt.

Da hat es bei einem Fehler schon längst den Deckel deines Mega 
abgesprengt, ehe das Netzteil überhaupt anfängt sich mal 'Gedanken 
darüber zu machen', ob man nicht eventuell vielleicht mal eine Sicherung 
auslösen könnte.

von Karl H. (kbuchegg)


Lesenswert?

Nicho F. schrieb:
> Hier wurde mir aber gesagt, die Schaltung sei so in Ordnung.
>
> Beitrag "Schaltung ATmega8 (Servoansteuerung, Temperatur)"


LOL.
Welchen Sinn macht es, ein Netzteil einzusetzen, welches problemlos 30A 
liefern kann, wenn man es dann mit einer 200mA Sicherung 'entschärft'?
Oder kaufst du dir einen Ferrari um dann nicht schneller als 30km/h zu 
fahren?

von Nicho F. (nichof)


Lesenswert?

Eine Sache vorweg: Von italienischen Autos halte ich sowieso nichts ;)
Die Sicherung war dazu da, dass das Netzteil bei einem Kurzen in der 
Schaltung keinen Schaden nimmt.
Deine Argumentation mit dem überdimensionierten Netzteil verstehe ich 
nicht ganz.
Soll ich die Schaltung ohne Sicherung an das PC-Netzteil hängen?

Die Metapher mit dem Ferrari finde ich an dieser Stelle unangebracht, 
das Netzteil muss ja schließlich den PC versorgen und den Strom für die 
Schaltung nebenher "aus dem Ärmel schütteln".

von Karl H. (kbuchegg)


Lesenswert?

Nicho F. schrieb:

> das Netzteil muss ja schließlich den PC versorgen und den Strom für die
> Schaltung nebenher "aus dem Ärmel schütteln".

Ach: das wusste ich nicht, dass du diese Schaltung an einen PC drann 
bauen willst! Normalerweise baut man solche Dinge alleinstehend.


> Die Sicherung war dazu da, dass das Netzteil bei einem Kurzen
> in der Schaltung keinen Schaden nimmt.

LOL. Anders rum! Anders rum!

Ein PC-Netzteil fackelt dir beim geringsten Fehler deine Mega-Schaltung 
ohne mit der Wimper zu zucken ab! Dein Argument ist es momentan, dass du 
an einem Panzer eine Stossstange anbringen willst, damit der Panzer 
keinen Schaden nimmt, wenn er durch das Haus durchfährt, dass du gerade 
baust. Der Panzer nimmt sowieso keinen Schaden! Der kracht einfach durch 
das Haus durch ohne langsamer zu werden.

von Nicho F. (nichof)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Ach: das wusste ich nicht, dass du diese Schaltung an einen PC drann
> bauen willst! Normalerweise baut man solche Dinge alleinstehend.

Wurde oft genug geschrieben im anderen Thread, abgesehen davon:
Warum zur Hölle sollte ich temperaturgeregelte Lüfter in der 
Gehäusedecke meines Computers über eine externe Stromquelle ansteuern...
Umständlicher kann man gar nicht mehr denken.


> LOL. Anders rum! Anders rum!


Nichts mit andersrum.
Um die Arbeit für die Schaltung wäre es zwar schade, aber die 3€ sind im 
Vergleich zu einem 120€ aufwärts Netzteil vollkommen egal.
Deswegen nochmal für Dich:
Ich möchte das Netzteil und meine sonstigen Komponenten vor der 
Schaltung schützen!

Die Sicherung hatte ich deshalb eingeplant, damit nicht gleich alles 
hoffnungslos abbrutzelt.
Wenn sie diesen Zweck nicht erfüllt, dann sag es mir bitte.

von Karl H. (kbuchegg)


Lesenswert?

> Wurde oft genug geschrieben im anderen Thread

Entschuldige bitte, dass ich nicht immer alle 200 täglich anfallenden 
Threads auswendig kenne. Ich bemüh mich ernsthaft, aber ich komm nicht 
hinterher, mir immer alle Details aller Problemkreise der Fragesteller 
in allen Threads zu merken.

Edith:
Auf eines aber kannst du wetten: den Name 'Nicho F.' merke ich mir :-)

von Nicho F. (nichof)


Lesenswert?

Ich erwarte natürlich von keinem, dass er alle Threads auswendig kennt.
Wenn Du dich jedoch über mein Vorhaben lustig machst (abzulesen an 
Deinen "LOL"'s), das jedoch zum Großteil darauf beruht, dass Du 
schlichtweg nicht gelesen hast, was ich vorhabe, finde ich das 
unmöglich.

Merk Dir meinen Namen ruhig, aber sei mir bitte nicht böse, wenn ich das 
nicht mit Deinem tue und sei nicht enttäuscht, wenn du meinen hier nicht 
mehr siehst.

Ich habe freundlich und respektvoll gefragt.
Aber anscheinend wird sich ja hier nur über Leute lustig gemacht, die 
sich nicht mit der Materie auskennen.

Karl Heinz Buchegger schrieb:
> Na dann. Gut brutzel.

> LOL.

> LOL. Anders rum! Anders rum!

Mensch, wir sind doch nicht mehr im Kindergarten.




Danke jedoch an den Gast, der mir zuerst geantwortet hat.
Werde mir die Sachen nochmal in Ruhe ansehen.

von Joe (Gast)


Lesenswert?

Die Funktion des LOL-Schreibers ist in diesem Forum falsch besetzt.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@ Nicho F.
Solche dämlichen Statements wie Deine habe ich hier schon länger nicht 
mehr gelesen. Je dümmer desto patziger und lernresistenter. Und ja, Du 
hast Recht, wir sind hier nicht im Kindergarten. Über Deine Netzteil 
Ansichten habe ich trotzdem herzhaft gelacht. You made my day :)

von Nicho F. (nichof)


Lesenswert?

Ich bin weder dumm noch patzig.
Lernresistent/-unwillig bin ich ebenfalls nicht, sonst wäre ich nicht 
hier.
Mehrfach habe ich geschrieben, dass ich neu auf dem Gebiet bin und 
deshalb Eure Hilfe benötigte.
Auch war ich anfangs sachlich und freundlich.
Leider kamen irgendwann nur Antworten wie "Gut brutzel" anstelle von 
konstruktiven Verbesserungsvorschlägen.

@Albert:
Wir haben uns doch nie was getan, oder?
Findest du es nicht ein wenig voreilig, einen Menschen dämlich, dumm, 
patzig und lernresistent zu nennen, mit dem Du noch nie ein Wort 
gewechselt hast?

Kann sein, dass Ihr Euch aufgrund meiner Unwissenheit angegriffen 
gefühlt habt, das war nicht meine Absicht.
Dennoch fand ich die Art, wie Karl Heinz mir zu helfen versucht hat, 
etwas befremdlich.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@ Nicho F.
>Findest du es nicht ein wenig voreilig, einen Menschen dämlich, dumm,
>patzig und lernresistent zu nennen, mit dem Du noch nie ein Wort
>gewechselt hast?

Dämlich habe ich nicht Dich bezeichnet, sonder explizit Deine 
Statements. Es gibt genügend kluge Menschen, die auch schon mal Blödsinn 
reden. Da sei es erlaubt, diesen auch so zu bezeichnen. Und ja, patzig 
und lernresistent betraf tatsächlich Dich.

Wenn Du Dir schon wegen dem Spruch "gut bruzzel" so ans Bein gepinkelt 
fühlst, bist Du hier fehl am Platz. Karl Heinz Buchegger hat genügend 
konstruktive Vorschläge gemacht. Es gibt hier Hilfe zur Selbsthilfe, 
keiner wird Deine Arbeit machen. Ich an Deiner Stelle hätte mal nach 
Karl Heinz's Spruch meine Schaltung überdacht. Aber das ist wohl in den 
Wind gesprochen ...

von Martin (Gast)


Lesenswert?

wenn ich "bascom" im thread lese ignoriere ich mittlerweile den thread 
und vermeide technische Antworten darauf. es läuft scheinbar immer auf 
dasselbe hinaus.

von Fox Mulder (Gast)


Lesenswert?

Martin schrieb:
> wenn ich "bascom" im thread lese ignoriere ich mittlerweile den thread
> und vermeide technische Antworten darauf. es läuft scheinbar immer auf
> dasselbe hinaus.

Deinen restlichen geistigen Dünnpfiff kannst du dann aber auch gerne 
selber behalten. Statt "technischer Antwort" kommt halt das übliche 
dümmliche Gelaber.

von Nicho F. (nichof)


Lesenswert?

Doch Albert, natürlich habe ich die Schaltung überdacht und tue es 
immernoch, ich möchte nur nicht alles gleich ins Forum stellen.
Wie Du lesen kannst, habe ich nach den ersten Antworten geschrieben, 
dass ich mich nochmal in Ruhe ransetze und Karl Heinz auf seine Frage 
mit dem Netzteil geantwortet (7. Post insgesamt).
Da war das Thema für mich schon gegessen, ich habe mich über Eure Hilfe 
gefreut und gut.
Doch dann schrieb Karl Heinz, dass das PC-Netzteil Schwachsinn ist und 
das mit dem Brutzeln.
Ich fühle mir nicht wegen des Spruches ans Bein gepinkelt, sondern 
deshalb, dass in diesem Post kein konstruktiver Verbesserungsvorschlag 
mehr war.
Lediglich die Aussage, dass mein Vorhaben nichts taugt.



"Es gibt hier Hilfe zur Selbsthilfe,
keiner wird Deine Arbeit machen."

Gebe ich Dir vollkommen Recht, deswegen habe ich mich anfangs bedankt 
und mich in Ruhe rangesetzt.
Danach begann erst das Gestichel von Karl Heinz.

Meine Fragen waren doch schon längst beantwortet.

von weinbauer (Gast)


Lesenswert?

Aaalso ... Leuts kommt mal runter.
Es sind da eingangs wahrscheinlich einfach nur ein paar 
Missverständnisse rein gekommen.

a) wurde es wohl so verstanden, dass die Schaltung alleine an einem 
PC-Netzteil hängen würde, der TO hat dann nachgelegt, dass das Ding in 
nen PC eingebaut werden soll.

b) Die Sicherung macht Sinn, sie schützt Deine Schaltung vor dem 
Netzteil, sprich bei Fehlfunktion raucht Dir weder das Netzteil noch die 
Schaltung ab.

c) Der Grundlastwiderstand wird wohl nur zur evaluierung drinnen sein, 
später im PC wirds genügend andere Lasten geben, die die Funktion 
übernehmen werden.

So, on Topic ... Der Schaltplan ist eher semipro ... an der Stelle ein 
Tip, es gibt einige Freeware für CAD Schaltungsentwurf und 
Leiterplattendesign,
Eagle, Target 3001 etc. da evtl. mal nachschauen.

Zur Programmierung ...

Es gibt da übliche Strukturen, die durchaus Sinn machen sich zu 
beherzigen.

Du hast eine Subroutine, die beim Start angesprungen wird und nie 
beendet wird (do loop), die nennst Du Sub Main ... Dann hast Du nochmal 
ne do - loop, die aber nie abgearbeitet wird weil Deine Sub nie beendet 
wird.
Das wird so nix, sorry.

übliche Programmstruktur sieht in etwa so aus:

Deklaration von Konstanten und Aliassen
Variablendeklaration der globalen Variablen
Deklaration der Subroutinen
Deklaration der Funktionen
Hardwareinitialisierung / initialisierung der Interrupthandler

Do
... Aufruf von Subroutinen (ohne Endlosschleifen)
... Aufruf von Funktionen (ohne Endlosschleifen)
... Aufruf von Subroutinen (ohne Endlosschleifen)
... Aufruf von Funktionen (ohne Endlosschleifen)
Loop

Subroutinen (mit lokalen Variablen wenn notwendig)
Funktionen (mit lokalen Variablen wenn notwendig)

Interruptroutinen (wenn vorhanden)

Es ist noch kein Meister vom Himmel gefallen und aller Anfang ist 
schwer, also immer locker bleiben.

von Nicho F. (nichof)


Lesenswert?

Vielen Dank für die ausführliche Antwort :)
Mit dem Schaltplan hast Du natürlich Recht, arbeite mich gerade auch in 
EAGLE rein.

Gruß

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.