Forum: Mikrocontroller und Digitale Elektronik A/D Beim Atmega16


von Pierre G. (bqube)


Lesenswert?

Narbend alle zusammen,

für meinen ersten Test mit einem A/D Wandler hab ich mir das Beispiel 
aus dem GCC Tut vorgenommen und laut Compiler auch alles richtig gemacht 
nur wandelt er anscheint nicht richtig oder ich hab es falsch 
verstanden.

Zum Aufbau ich verwende die Ext Ref Spannung und hab am ADC0 des m16 ein 
Poti angeschlossen.

Poti Kontakte (Links Plus) (Mitte ADC0) (Rechts Plus)

Am PORTD 6 Hängt eine LED dran

WERT <= 512 LED AUS
WERT >= 512 LED AN

Ich kann am Poti drehen wie ich will da passiert nix könnte sich einer 
von euch mal Bitte den Code anschauen.

Mfg Bqube
1
/* ADC initialisieren */
2
void ADC_Init(void) {
3
 
4
  uint16_t result;
5
  ADMUX &=~ ((1<<REFS0)|(1<<REFS1));
6
  ADCSRA = (1<<ADPS1) | (1<<ADPS2);     // Frequenzvorteiler
7
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
8
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
9
  while (ADCSRA & (1<<ADSC) ) {         // auf Abschluss der Konvertierung warten
10
  }
11
  result = ADCW;
12
}
13
 
14
15
uint16_t ADC_Read( uint8_t channel )
16
{
17
18
  ADMUX = (ADMUX & ~(0x00)) | (channel & 0x00);
19
  ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
20
  while (ADCSRA & (1<<ADSC) ) {   // auf Abschluss der Konvertierung warten
21
  }
22
  return ADCW;                    // ADC auslesen und zurückgeben
23
}
24
 
25
26
 
27
/* Beispielaufrufe: */
28
29
int main(void)
30
{
31
 uint16_t adcval;
32
 ADC_Init();
33
 DDRD = 0xFF;
34
 PORTD |= (1<<6);
35
 _delay_ms(100);
36
 PORTD |= (1<<6);
37
 _delay_ms(100);
38
 PORTD &=~ (1<<6);
39
 _delay_ms(100);
40
 PORTD |= (1<<6);
41
 _delay_ms(100);
42
 PORTD &=~ (1<<6);
43
 _delay_ms(100);
44
 PORTD |= (1<<6);
45
 _delay_ms(100);
46
 PORTD &=~ (1<<6);
47
 _delay_ms(100);
48
 PORTD |= (1<<6);
49
 _delay_ms(100);
50
 PORTD &=~ (1<<6);
51
 _delay_ms(100);
52
 
53
 
54
 while( 1 ) {
55
   adcval = ADC_Read(0);  // Kanal 0
56
   // mach was mit adcval
57
   if(adcval <= 512)
58
   {
59
     PORTD |= (1<<6);
60
   }
61
   if(adcval >= 512)
62
   {
63
     PORTD &=~ (1<<6);
64
   }
65
 }
66
}

von Detlef K. (adenin)


Lesenswert?

1
ADMUX = (ADMUX & ~(0x00)) | (channel & 0x00);
Das sieht sehr suspect aus. :)
Also pratisch änderst Du da am ADMUX garnix. :P
Muss ich mal im Datenblatt nachschauen, wo das hinführt.

: Bearbeitet durch User
von Irgendwer (Gast)


Lesenswert?

> Poti Kontakte (Links Plus) (Mitte ADC0) (Rechts Plus)

In diesem Fall ist der ADC0 immer "Plus".

von Denkanstoss (Gast)


Lesenswert?

Was soll das?

ADMUX = (ADMUX & ~(0x00)) | (channel & 0x00);

irgendwas UND 0x00 ist immer 0x00

~0x00 = 0xFF

irgendwas & 0xFF ist immer irgendwas

irgendwas | 0x00 ist immer irgendwas

ADMUX wird hier also nicht verändert.

von Detlef K. (adenin)


Lesenswert?

Irgendwer schrieb:
>> Poti Kontakte (Links Plus) (Mitte ADC0) (Rechts Plus)
>
> In diesem Fall ist der ADC0 immer "Plus".

Ha, das hab ich ja glatt überlesen :)
Der Pegel an ADC0 ändert sich nie!
Weil, mit dem ADMUX würde auf alle Fälle ADC0 gewandelt werden.

Textaufgaben find ich doof. ;)

von Pierre G. (bqube)


Lesenswert?

Sry mein Fehler der Poti sitzt an Plus ADC0 und Minus

von Detlef K. (adenin)


Lesenswert?

Häng doch mal den erzeugten Code hier an, dann können wir ja mal den 
Simulator damit füttern.
Mal sehn, wo der sich verschluckt.

von Pierre G. (bqube)


Lesenswert?

Hier ist der Code den ich schon ein wenig mit eurer Hilfe verändert hab
1
#include <avr/io.h>
2
#ifndef F_CPU
3
#warning "F_CPU war noch nicht definiert, wird nun mit 8000000 definiert"
4
#define F_CPU 8000000UL
5
#endif
6
#include <util/delay.h>
7
8
9
/* ADC initialisieren */
10
void ADC_Init(void) {
11
 
12
  uint16_t result;
13
  ADMUX |= (1<<REFS0);          // AVCC
14
  ADCSRA |= (1<<ADPS1) | (1<<ADPS2);     // Frequenzvorteiler
15
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
16
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
17
  while (ADCSRA & (1<<ADSC) ) {         // auf Abschluss der Konvertierung warten
18
  }
19
  result = ADCW;
20
}
21
 
22
23
uint16_t ADC_Read( uint8_t channel )
24
{
25
26
  ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
27
  while (ADCSRA & (1<<ADSC) ) {   // auf Abschluss der Konvertierung warten
28
  }
29
  return ADCW;                    // ADC auslesen und zurückgeben
30
}
31
 
32
33
 
34
/* Beispielaufrufe: */
35
36
int main(void)
37
{
38
 uint16_t adcval;
39
 ADC_Init();
40
 DDRD = 0xFF;
41
 PORTD |= (1<<6);
42
 _delay_ms(100);
43
 PORTD |= (1<<6);
44
 _delay_ms(100);
45
 PORTD &=~ (1<<6);
46
 _delay_ms(100);
47
 PORTD |= (1<<6);
48
 _delay_ms(100);
49
 PORTD &=~ (1<<6);
50
 _delay_ms(100);
51
 PORTD |= (1<<6);
52
 _delay_ms(100);
53
 PORTD &=~ (1<<6);
54
 _delay_ms(100);
55
 PORTD |= (1<<6);
56
 _delay_ms(100);
57
 PORTD &=~ (1<<6);
58
 _delay_ms(100);
59
 
60
 
61
 while( 1 ) {
62
   adcval = ADC_Read(0);  // Kanal 0
63
   // mach was mit adcval
64
   if(adcval <= 512)
65
   {
66
     PORTD |= (1<<6);
67
   }
68
   if(adcval >= 512)
69
   {
70
     PORTD &=~ (1<<6);
71
   }
72
 }
73
}

von Detlef K. (adenin)


Lesenswert?

Ich meinte eigentlich das fertige Binär- oder Hex-File.
Vielleicht macht ja der Compiler was merkwürdiges, zB. dass PORTA 
irgendwie vorconfiguriert wird. Du initalisierst ja selbst PortA nicht.


Aber das könnte ich erst morgen Abend anschauen. Das Bett ruft.

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

Achso hier ist die Hex Datei vielleicht hast du ja mehr glück wie ich :)

Mfg Bqube

von Detlef K. (adenin)


Angehängte Dateien:

Lesenswert?

Hab's mir doch noch schnell angesehen.
Im Simulator läuft es.

Da bleiben noch folgende Fragen:
Leuchte die LED?
wie hoch ist die Spannung am ADC0 und ändert sie sich tatsächlich?
Was für einen Widerstand hat das Poti?

[edit]
Ich hab mal noch das disassemblierte(Q&D für AVRStudio) Programm 
angehängt.

: Bearbeitet durch User
von Pierre G. (bqube)


Lesenswert?

So nun bin ich auch wieder da,

mir hatte das keine Ruhe gelassen und so hab ich noch ein wenig probiert 
siehe da es passiert was, auch wenn es mich Zwei Atmega16 gekostet hat.

Die Wandelung hab ich auch nur auf den Atmega644 testen können da mein 
Vorrat an M16 aufgebraucht war.

Ich kann mir nicht erklären warum die Dinger durchgebrannt sind denn ich 
hab beim 644 genau das gleiche Programm verwendet.




Zum testen hatte ich einen 1k Poti .... wie gesagt es war ja nur der 
Test nun kommt das eigentliche Projekt :) was die Woche fertig werden 
muss.

Mfg Bqube

von Detlef K. (adenin)


Lesenswert?

Hmm, ich versteh nicht, warum die Dinger bei einigen so häufig kaputt 
gehen.
Ich vermute mal statische Aufladung.

von Pierre G. (bqube)


Lesenswert?

Eben nicht sie haben im Programmer den geist aufgegeben ...

Programmer Pollin Evaluation

http://www.pollin.de/shop/dt/MTY5OTgxOTk-/Bausaetze_Module/Bausaetze/ATMEL_Evaluations_Board_Version_2_0_1_Bausatz.html

Den 644 habe ich dann zum testen mit einem selbstbau Programmer 
beschrieben da ging alles reibungslos, aber komischer weise Programmiere 
ich mit dem Pollin Board seid 4 Jahren ohne Probleme Atmega8 und 
attiny85 nur bei dem 16 macht das board Zicken.

Mfg Bqube

von Pierre G. (bqube)


Lesenswert?

SO nun mal eine Frage zum Messen....

Wenn ich mit meinem Uc einen Widerstandswert in einem festen Bereich 
messen möchte könnte ich wie folgt vorgehen...

9V Batterie --> LM317 Strombegrenzung 5mA --> LM317 Spannungsbegrenzung 
5V

So könnt ich doch Maximal ~1KOhm Rechnerrisch erfassen oder nicht ?

R=U/I

5V / 0.005A = 1000Ohm

Mfg Bqube

von Detlef K. (adenin)


Lesenswert?

Naja, ein kleiner Fehler wird durch den Spannungsteiler der 
Spannungsbegrenzung entsehen. Der liegt praktisch paralell zu deinem zu 
messenden Widerstand.

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

Also ist das hier dann exakter ?

Mfg Bqube

von Detlef K. (adenin)


Lesenswert?

Nö, der erste Ansatz mit Konstantstrom ist besser.

von Pierre G. (bqube)


Lesenswert?

Mhhh Konstantstrom Plus 7805 oder wirkt da dann der Selbe Effekt wie 
beim LM317 mit seiner externen Zusatzschaltung '?

Mfg Bqube

von spess53 (Gast)


Lesenswert?

Hi

>Mhhh Konstantstrom Plus 7805 oder wirkt da dann der Selbe Effekt wie
>beim LM317 mit seiner externen Zusatzschaltung '?

Erkläre mal ,was eine 'Kombination' aus Stromregler und Spannungsregler 
machrn soll.

MfG Spess

von Pierre G. (bqube)


Lesenswert?

Auf was bezieht sich deine Frage denn genau ... auf das was passieren 
kann was adenin schrieb oder was ich darmit erreichen will ?

Mfg Bqube

von spess53 (Gast)


Lesenswert?

Hi

>Auf was bezieht sich deine Frage denn genau ...

Z.B. auf das

>9V Batterie --> LM317 Strombegrenzung 5mA --> LM317 Spannungsbegrenzung
>5V

MfG Spess

von Bqube (Gast)


Lesenswert?

So bekomme ich 5V und einen konstanten Strom für die wid Messung

von spess53 (Gast)


Lesenswert?

Hi

>So bekomme ich 5V und einen konstanten Strom für die wid Messung

Denk mal nach oder träum weiter.

MfG Spess

von Pierre G. (bqube)


Lesenswert?

Wieso ? was ist an der Kombination denn falsch?!

von Cyblord -. (cyblord)


Lesenswert?

Pierre Gnauck schrieb:
> Wieso ? was ist an der Kombination denn falsch?!

Na vielleicht dass Spannung, Strom und Widerstand voneinander abhängen. 
Son Typ names "Ohm" hat das rausgefunden. Und wenn du nun den Strom UND 
die Spannung vorgeben willst, dann MUSST du auch den Widerstand 
vorgeben. Sprich, deine gewünschte Spannung beim gewünschten Strom 
stellt sich NUR ein wenn du den exakt richtigen Lastwiderstand hast.

Lange Rede kurzer Sinn: Beides kannst du nicht haben, entweder konstante 
Spannung oder konstanter Strom.

gruß cyblord

von Pierre G. (bqube)


Lesenswert?

Dann versteht ihr mich falsch die 5v sind dafür da damit ich den Eingang 
vom Uc nicht grille ich leite die 5V dann mit einem festen Strom durch 
einen variablen Widerstand.

von adenin (Gast)


Lesenswert?

Lass dich nicht beirren, Du bist auf dem richtigen Weg.
Ist nicht optimal, aber das Prinzip ist richtig.
Und wenn es nicht jeder versteht, hast Du einen klaren Vorteil. :)
Man muss sich für seine Ideen nicht rechtvertigen. Besonders nicht, wenn 
sie funktionieren. ;)

von adenin (Gast)


Lesenswert?

ja, ja, rechtfertigen schreibt man mit doppel v :)

von Carsten R. (kaffeetante)


Lesenswert?

Pierre Gnauck schrieb:
> Dann versteht ihr mich falsch die 5v sind dafür da damit ich den Eingang
> vom Uc nicht grille ich leite die 5V dann mit einem festen Strom durch
> einen variablen Widerstand.

Entweder Du schreibst arg mißverständlich oder Du bist noch immer auf 
dem Holzweg. Du kannst nicht beides gleichzeitig fest vorgeben und 
erwarten, daß das mit verschiedenen Widerständen klappt. Das wurde schon 
erklärt (siehe oben). Es gilt noch immer U=R*I.

Was möglich ist:

a) Man gibt die Spannung vor und begrenzt den Strom, was bedeutet das 
die Spannung ab Erreichen des Strommaximums heruntergeregelt wird.
oder

b) Man gibt den Strom vor und begrenzt die Spannung, was bedeutet das 
der Strom ab Erreichen des Spannungsmaximums heruntergeregelt wird.

Dies bedeutet, daß in beiden Fällen nicht beides gleichzeitig der 
Vorgabe entspricht. Einer der beiden Werte ist niedriger als die 
Vorgabe, bis auf die ganz spezielle Ausnahme, in der der Widerstand mit 
R=U/I passend zu den Vorgaben zu U und I gewählt ist

: Bearbeitet durch User
von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

adenin schrieb:
> Lass dich nicht beirren, Du bist auf dem richtigen Weg.

Du hast ja recht aber es kann ja wirklich sein das ich mich 
unverständlich ausdrücke was ich eigentlich nicht glaube.... aber es 
kann ja so sein...

mhhh oder die User lesen sich nicht alles durch...



Da mich ja hier einige an das Ohmsche Gesetzt erinnern wollen, wenden 
wir es doch einfach mal an :)

Sogar mit Bild !!!

R = U/I

R = 0.5 V / 0.005 A

R = 100 Ohm

Wie ich auf die 0.5 V komme ganz einfach..... Die würde ich am M16 Pin 
ADC 7 messen wenn der zu erfassende Widerstand einen Wert von 100 Ohm 
hätte.

Weil wie wir ja alle wissen, (ich mein gerade die User die mir mit dem 
Ohmschen Gesetz angekommen sind) dass wenn ein Strom durch einen 
Widerstand fließt, an diesem Widerstand auch eine Spannung abfällt.

Soooo


Pierre Gnauck schrieb:
> Dann versteht ihr mich falsch die 5v sind dafür da damit ich den Eingang
> vom Uc nicht grille ich leite die 5V dann mit einem festen Strom durch
> einen variablen Widerstand.


In diesen drei Zeilen steht doch genau das gleiche in Grün drin

Zusammengefasst:

 -Feste Spannung von 5V zum Schutz des Atmega16
 -Eine Konstantstromquelle
 -Einen Variablen Widerstand

Ich hoffe mal jetzt haben es alle verstanden wenn nicht selbst schuld.

Mfg Bqube

von spess53 (Gast)


Lesenswert?

Hi

Stromquelle schon mal falsch.

MfG Spess

von Dietrich L. (dietrichl)


Lesenswert?

Pierre Gnauck schrieb:
> Sogar mit Bild !!!

Ich sehe schon mal 2 Fehler:

1. der AD-Eingang ist hochohmig, da fließt dort (fast) kein Strom. Also 
ist die Spannung an ADC7 immer +5V
2. AVCC ist ein Versorgungspin und braucht eine feste Spannung. Falls 
tatsächlich die 5V durch den Strom des Potis runtergehen sollte (was er 
wegen 1. z.Zt. nicht tut), arbeitet der µC nicht mehr richtig.

Gruß Dietrich

von Pierre G. (bqube)


Lesenswert?

spess53 schrieb:
> Hi
>
> Stromquelle schon mal falsch.
>
> MfG Spess

Wenn du es schaffen würdest ... nur falls..... könntest du ja auch einen 
längeren Satz mit mehr Information bilden z.b das warum ?

Dietrich L. schrieb:
> 2. AVCC ist ein Versorgungspin und braucht eine feste Spannung. Falls
> tatsächlich die 5V durch den Strom des Potis runtergehen sollte (was er
> wegen 1. z.Zt. nicht tut), arbeitet der µC nicht mehr richtig.

Ja aber wieso das denn ? Die AVCC-Leitung geht doch vor den Widerstand 
an den Ausgang vom LM317 ?

Mfg Bqube

von Karl H. (kbuchegg)


Lesenswert?

Pierre Gnauck schrieb:

> Ja aber wieso das denn ? Die AVCC-Leitung geht doch vor den Widerstand
> an den Ausgang vom LM317 ?

Und welche SPannung liegt an diesem Pin an?
Heinweis: Nein, es sind nicht 5V. Noch nicht mal dann, wenn es im 
Schaltplan dort dabei steht.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

vielleicht solltest du dir mal darüber im klaren sein, wie eine 
Konstantstromquelle arbeitet.

Man hat da einen Widerstand, der an dem einen Ende an Masse hängt
1
      |
2
     +-+
3
     | |
4
     +-+
5
      |
6
   ---+---

Und der muss da auch an Masse hängen, damit überhaupt irgendwann da mal 
ein Strom fliessen kann.

Weiters gibt es eine Konstantstromquelle, die am anderen Ende des 
Widerstandes angeschlossen wird
1
     KSQ
2
      |
3
      |
4
     +-+
5
     | |
6
     +-+
7
      |
8
   ---+---

diese Konstantstromquelle hat die Aufgabe, durch den Widerstand eine 
bestimmte Menge an Strom zu jagen.
Nur das ist leichter gesagt als getan. Denn die KSQ kann nicht einen 
Strom durch den Widerstand durchdrücken. Strom wird gezogen und nicht 
gepresst. D.h. der Widerstand bestimmt, wieviel Strom durch ihn 
durchfliesst. Die dazu benötigte Kenngröße ist eben das R. Der 
Konstantstromquelle bleibt nichts anderes übrig, als die am Widerstand 
anliegende Spannung so lange zu verändern, bis dann eben die gewünschte 
Strommenge durchrinnt.

Um das festszustellen, und damit (und mit der Kenntnis der Strommenge, 
die die KSQ einstellt) misst du also HIER
1
     KSQ
2
      |
3
      +--------> zum ADC
4
      |
5
     +-+
6
     | |
7
     +-+
8
      |
9
   ---+---

die Spannung, die die KSQ einstellt! Und mit der Spannung und dem 
bekannten Stom kann man dann auch den Wert des Widerstandes bestimmen.


Hier
1
               +-----+
2
     KSQ ------|     |--------
3
               +-----+
rinnt überhaupt kein Strom. Das ist kein geschlossener Stromkreis! WIe 
soll da denn Strom fliessen?

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>Wenn du es schaffen würdest ... nur falls..... könntest du ja auch einen
>längeren Satz mit mehr Information bilden z.b das warum ?

Ich dachte du kennst das Datenblatt? Wenn nicht, sollest du es dringend 
intensiv lesen und verstehen.

MfG Spess

von Pierre G. (bqube)


Lesenswert?

Danke Karl Heinz Buchegger :)

Ich hatte dabei einfach ein wenig zu Simple gedacht und es würde auch so 
klappen aber das ist ja genau wie beim Spannungsteiler ich kann nichts 
messen wenn der gegen Masse liegende Widerstand nicht mit der Masse 
verbunden ist und so auch kein Strom fließt.

Mfg Bqube

von Detlef K. (adenin)



Lesenswert?

Naja, dein Ansatz ist fast richtig.

Benutz aber Anstatt eines zweiten LM317 zur Spannungsbegrenzung lieber 
eine 5.1V Z-Diode.

siehe erstes Bild
Da ist die Spannung über einen Bereich von 0 - 1500 Ohm aufgezeichnet.
Für erste Versuche sollte das ausreichend sein.

Und als lowcost Variante noch Bild 2.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>Benutz aber Anstatt eines zweiten LM317 zur Spannungsbegrenzung lieber
>eine 5.1V Z-Diode.

Warum keine einfache Diode nach VCC? Ist doch eh nur ein geringer 
Konstantstrom. Aber lass Pierre erst mal sein zusammengefallendes 
Kartenhaus sortieren. Dann kann man weitersehen.

MfG Spess

von Detlef K. (adenin)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Benutz aber Anstatt eines zweiten LM317 zur Spannungsbegrenzung lieber
>>eine 5.1V Z-Diode.
>
> Warum keine einfache Diode nach VCC? Ist doch eh nur ein geringer
> Konstantstrom. Aber lass Pierre erst mal sein zusammengefallendes
> Kartenhaus sortieren. Dann kann man weitersehen.
>
> MfG Spess

Ja, der zusätzliche 1k Vorwiderstand hält alles Böse vom IO ab. 
Eigentlich brauch man so keine Schutzdiode, weil der ATMega ja jeweils 
eine nach GND und nach VCC für jedes IO-Pin hat, Man will ja auch nicht 
zu viel auf einmal tricksen. Dabei man muss aber aufpassen. Es gibt 
CPU's, da werden die Schutzdioden weggeschalte, wenn man bestimmte Pins 
mit einer alternativen Funktion (also nicht Digital-IO) verwendet.

Und so sehr zusammen gefallen ist es ja nicht. In meiner Schaltung hab 
ich nur ein paar Sachen korrigiert. Das Prinzip ist aber so, wie er es 
ursprünglich machen wollte: mit Konstantstrom die Spannung über den 
Widerstand messen.

von Carsten R. (kaffeetante)


Lesenswert?

Pierre Gnauck schrieb:
> In diesen drei Zeilen steht doch genau das gleiche in Grün drin
>
> Zusammengefasst:
>
>  -Feste Spannung von 5V zum Schutz des Atmega16
>  -Eine Konstantstromquelle
>  -Einen Variablen Widerstand

Das geht nicht. Nochmal U=R*I. Das sind 3 Größen. Setzt Du zwei davon 
fest, so ist die dritte dadurch auch schon definiert und somit kann 
folglich nichts variabel sein. Man legt eine Größe fest um die Andere 
zu messen um dann aus den beiden die dritte zu berechnen.

: Bearbeitet durch User
von Carsten R. (kaffeetante)


Lesenswert?

Ach ja, die ganze Schaltung kann so nicht funkzionieren. Ein Teil wurde 
schon beschrieben.

Der erste Regler ist nur im bei niederohmiger Last eine 
Konstantstromquelle, wird aber durch den nachfolgenden Spannungsregler, 
der ja "dicht" macht wenn die Spannung hochläuft, zur Strombegrenzung.

LM3 kann keinen Stromfluß erzwingen wenn der Strom nicht angenommen 
wird. Er kann nur "zu" machen wenn zuviel fließt. Dann bricht aber die 
Spannung am LM4 ein, da ihm der Saft ausgeht um die Spannung zu halten.

Weiter hängt die Versorgung des Atmels, oder zumindest ein Teil davon 
(AVcc) hinter dem Spannungsregler. Daß heißt er wird über den 
strombegrenzten Pfad versorgt.

Jetzt stelle ich mal ganz unschuldig die Frage was dort mit der Spannung 
passiert wenn über AVcc viel Strom "verbraucht" wird und was passiert 
wenn der Atmel über AVcc mehr als die 5 mA benötigen sollte für seine 
Aufgaben?

U=R*I verwende ich um klar zu machen, daß sich die Größen gegenseitig 
beeinflussen. Ich kann nicht U UND I festlegen und R variabel lassen. 
Und ich kann dann schonmal gar nichts sinnvoll messen, da der 
A/D-Wandler Spannungen digitalisiert um dann daraus den Rest zu 
errechnen. Da gibt es nicht viel zu berechnen wenn alle Größen Fix uns 
unveränderlich sind.

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

So ich denk mal ich habe nun alle veränderungen übernommen.

Mfg Bqube

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Zwischen AVcc und AGND gehört eine 100nF Kondensator (Kerko).
Zwischen Vcc und GND gehört ein 100nF Kondensator (Kerko).

Beide jeweils so dicht an die Pins ran, wie es geht.

von Karl H. (kbuchegg)


Lesenswert?

Der Hersteller des LM317 sieht einen Ausgangskondensator von 1µF vor. Du 
solltest den nicht eigenmächtig ändern! Das schlägt sich sonst in den 
Regeleigenschaften des Spannungsreglers nieder! Der Hersteller weiß 
schon, welche Werte gut sind und empfiehlt die auch in den 
Datenblättern.

von Karl H. (kbuchegg)


Lesenswert?

mir fehlt da zb noch der ganze Komplex ISP-Programmier-Anschluss. Und 
irgendeine Form der Anzeige wirst du ja wohl auch noch brauchen.

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

So weit war ich mit dem Zeichnen noch nicht denn ich hab noch ein 
kleines Problem mit der Aufteilung und Umsetzung meiner Idee.

Ich möchte vom PORTA alle 8Bit für die Datenübertragung nutzen und wenn 
dies abgeschlossen ist über jeden Zweiten PORT sprich PORTA 1,3,5,7 eine 
Spannungsmessung vornehmen.

Es wird zuerst geprüft ob alle 8 Ethernet Leitungen richtig verklemmt 
wurden, ist dies passiert schließt der Sender jeweils ein Adern paar 
kurz und der Empfänger kann dann den Leitungswiderstand der Schleife 
messen.

Mfg Bqube

: Bearbeitet durch User
von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

So jetzt müsste das mit der Messung auch klappen fehlt noch das LCD und
der Test.

Mfg Bqube

von Detlef K. (adenin)


Lesenswert?

Äh..Hmmm...*grübel*

Wer misst, misst Misst.

Also den Schleifenwiderstand misst Du so nicht.
Aber R4 kannst Du schön vermessen. ;)
Das ist der Prüfling. Anstelle von R4 muss Deine zu prüfende Leitung 
dort gegen Masse eingefügt werden.

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

So nen misst stmmt ... immer diese kleinen Fehler mit der großen wirkung 
.)

Mfg Bqube

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Pierre Gnauck schrieb:
> So nen misst stmmt ... immer diese kleinen Fehler mit der großen wirkung
> .)

Ich habe zwar noch nicht kapiert bzw. mir die Mühe gemacht, zu kapieren 
wie der Messablauf für die Schleifenmessung funktioniert (*), aber die 
Relais brauchen in jedem Fall Freilaufdioden. Ob die Relais direkt von 
den Ports betrieben werden können oder einen Treiber brauchen, hängt von 
ihren Daten ab.

(*) Vielleicht kannst Du ja mal den Messablauf beschreiben, was so 
nacheinander passiert (Signale an den Port-Pins, Relaiseinstellung, 
Aktionen im Programm).

Gruß Dietrich

von Pierre G. (bqube)


Lesenswert?

Dietrich L. schrieb:
> (*) Vielleicht kannst Du ja mal den Messablauf beschreiben, was so
> nacheinander passiert (Signale an den Port-Pins, Relaiseinstellung,
> Aktionen im Programm).

Klar das mach ich aber wird erst morgen abend was, Samstag früh ist 
Sonderschicht.

Mfg Bqube

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

Moin moin,

Der Ablauf ist wie folgt:

Der Sender schickt über jede der 8 Datenleitungen einen anderen 
Datensatz, so das der Empfänger weiß wo sich welche Leitung befindet. 
Mit dieser Information kann dann der Techniker die Leitungen so Umpolen 
das sie 1-1 verdrahtet sind.

Sind alle Datenleitungen 1-1 gepolt so kann die Widerstand Messung 
beginnen, der Sender Brückt intern die Adern 1-2 , 3-4 , 5-6 , 7-8 und 
im Empfänger werden die Wechselkontakte vom Relai K10 Betätigt.

Die Port's PC1, PC3, PC5, PC7 werden auf Masse geschaltet und mit Hilfe 
von K1 , K2 , K3 , K4 kann der Empfänger jedes Leitungspaar durchmessen.

Hoffentlich konnte ich es verständlich genug rüber bringen :)

Mfg Bqube

von Detlef K. (adenin)


Lesenswert?

Bennen mal das Signal +5V/1 um, sonst verwiirt das nur die Leute. ;)
Und das Symbol TH hab ich noch nie vorher gesehen. Was'n das?

: Bearbeitet durch User
von Pierre G. (bqube)


Lesenswert?

Das hatte ich nur für die Vernetzung verwendet damit ich da nicht quer 
durch eine Leitung ziehen muss, für mehr ist das nicht gedacht.

Mfg Bqube

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

Und so sieht der Sender Aus.

Mfg Bqube

von Dietrich L. (dietrichl)


Lesenswert?

Pierre Gnauck schrieb:
> Hoffentlich konnte ich es verständlich genug rüber bringen :)

Ja. Das könnte / müsste funktionieren.

Gruß Dietrich

von Pierre G. (bqube)


Lesenswert?

Narbend,

beim Testen ist mir einer meiner 2313 kaputtgegangen was ich mir aber 
nicht erklären kann ?

//Sender//

Testprogramm 1:

Schaltet die Relais einzeln durch alle 100ms (ohne Probleme)


Testprogramm 2:

Schaltet alle Relais gleichzeit (ohne Probleme)


Testprogramm 3:

Setz alle pins vom PORTB auf 0V (ohne Probleme)


Testprogramm 4:

Setz alle pins vom PORTB auf 5V (ohne Probleme) aber danach ist der 2313 
nicht mehr Programmierbar



Hab das Testprogramm 4 ein weiteres mal auf einen anderen (neuen) 2313 
geschrieben ... getestet und kann ihn auch weiter beschreiben ohne 
Probleme ....

Woher kommt es das sich ein Uc nicht mehr beschreiben lässt ?
Fehler im Programmer denn die Sendeplatine mit der ich die Test's 
durchführe ist immer die Selbe?

Mfg Bqube

von Pierre G. (bqube)


Angehängte Dateien:

Lesenswert?

So hier ist die fertige Sendeeinheit im Gehäuse :) (Ein wenig stolz)

Warum der erste 2313 kaputt gegangen ist da hab ich eine kleine 
Vermutung,
was passiert wenn man die Ausgänge auf 5V schaltet aber vorher die PORTS 
nicht als Ausgänge definiert?

Ist der Uc deswegen kaputt gegangen?

Mfg Bqube

von Carsten R. (kaffeetante)


Lesenswert?

Pierre Gnauck schrieb:

> was passiert wenn man die Ausgänge auf 5V schaltet aber vorher die PORTS
> nicht als Ausgänge definiert?
>
> Ist der Uc deswegen kaputt gegangen?

Das ist völlig ok und steht auch so im Datenblatt. Damit aktivierst du 
nur die Pull-Ups solange es Eingänge sind.

Es gibt 4 Zustände.

1. High-Z Eingang (high impedance)
2. Eingang mit Pull-Up aktiviert
3. Ausgang low
4. Ausgang high

Von 1 kommt man nach 4 nur über den Zwischenschritt 2 oder 3, da man nur 
von Eingang zu Ausgang umschalten kann und danach PORTxn ändern kann 
oder umgekehrt. Beides gleichzeitig geht nicht, da es unterschiedliche 
Register sind und daher 2 Befehlre erforderlich sind. Das ändern von 
PORTxn (de)aktiviert die Pull-Ups wenn der Port auf Eingang steht oder 
setzt den Ausgang, wenn der Port auf Ausgang steht. Es gibt nur diese 
beiden Wege und beide sind zulässig.

von Ewiger Gast (Gast)


Lesenswert?

Pierre Gnauck schrieb:
> 100_1955.png
> 100_1954.png

Was meinst du, welche Bedeutung der Hinweis auf die Bildformate hat, 
der hier im Forum direkt vor einem Upload angezeigt wird.

Was ist an "JPG-Dateien NUR für Fotos und Scans verwenden, Schaltpläne 
und Zeichnungen nur als PNG oder GIF" so schwer zu verstehen?

von Pierre G. (bqube)


Lesenswert?

Meine Kamera Spuckt nur PNG aus ... hatte versucht die Bilder dann mit 
Hilfe von Software in JPG zu wandeln was komischer weise die Größe um 
ein vielfaches vergrößert hatte.



Noch eine kleine Frage nebenbei..... gibt es große Unterschiede bei den 
Toleranzen von Zehner Dioden ?

Denn bei meinen die ich von Pollin hab (5V1) kann ich nur 4.3V bei 9V 
Eigenspannung messen.?

Mfg Bqube

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.