Shock Media

Navigatie

Atmega16 ADC instabiel bij power consumption

Forum > Digitaal > Atmega16 ADC instabiel bij power consumption
Naam Bericht
yogib3ar

Hallo,

Ik heb een klein probleempje.

Ik heb een keyboardje gemaakt met een R netwerkje
(http://www.avr-asm-utorial.net/avr_en/keypad/keyboard.html)
Deze aangelsloten aan adc0 en daar een klein assembly progje voor gebruikt met een interrupt als de ADC klaar is met samplen. Werkt mooi, geen probleem.
Echter ik heb aan de uC 2 stappen motor aansturingen en een LCD gekoppeld(De steppers gebruiken tesamen ongeveer 1 ampere deze stroom wordt geleverd aan de primaire kant van de lm7805=9,6 volt, moet later aan een battery packje).
Als ik de beide stappen motortjes afschakel, dan werkt het keyboard zo als het moet.
Echter zodra ik de steppers aansluit, gaat het op PDA0 gemeten voltage (steppers zijn dan bekrachtigd, en zonder ergens op te drukken) van 0,03Vt naar 0,23Vt.
Hierdoor komt de uitlezing van het 3x4 keyboardje in gedrang.
De steppers zijn een Uni- en een bi-polair.
Ik heb een gestabiliseerde voeding op 9,6 volt te staan en daarachter een 7805 voeding gemaakt voor de uC, LCD en dergelijke.
Ook hierop meet ik een kleine verhoging op de 5vt lijn. (ik heb wel een elco en een Ctje van 100n aan beide kanten van de 7805 te staan)
Ik gebruik de AVCC maar niet de AREF. (weet niet goed wat ik daar mee aan moet)

Alles werkt dus wel maar als ik geprogrammeerd heb dat de stappen moter naar boven moet draaien met het cijfer 2, dan is dat nu de ene keer de toets 2 en dan weer es de toets 3.

Enig idee,

merci...
RES

Een kleine anti rimpel elco 100u/16v vlak bij de AVR voedingspinnen AVcc, Vcc plaatsen.
[Bericht gewijzigd door RES op 5 september 2008 11:46:00]
RES @ http://www.atxmega.com - AVR microcontrollers
Gerwin

quote:
Op 5 september 2008 11:42:45 schreef yogib3ar:
Hallo,

Ik heb een klein probleempje.

Ik heb een keyboardje gemaakt met een R netwerkje
(http://www.avr-asm-utorial.net/avr_en/keypad/keyboard.html)
Deze aangelsloten aan adc0 en daar een klein assembly progje voor gebruikt met een interrupt als de ADC klaar is met samplen. Werkt mooi, geen probleem.
Echter ik heb aan de uC 2 stappen motor aansturingen en een LCD gekoppeld(De steppers gebruiken tesamen ongeveer 1 ampere deze stroom wordt geleverd aan de primaire kant van de lm7805=9,6 volt, moet later aan een battery packje).
Als ik de beide stappen motortjes afschakel, dan werkt het keyboard zo als het moet.
Echter zodra ik de steppers aansluit, gaat het op PDA0 gemeten voltage (steppers zijn dan bekrachtigd, en zonder ergens op te drukken) van 0,03Vt naar 0,23Vt.
Hierdoor komt de uitlezing van het 3x4 keyboardje in gedrang.
De steppers zijn een Uni- en een bi-polair.
Ik heb een gestabiliseerde voeding op 9,6 volt te staan en daarachter een 7805 voeding gemaakt voor de uC, LCD en dergelijke.
Ook hierop meet ik een kleine verhoging op de 5vt lijn. (ik heb wel een elco en een Ctje van 100n aan beide kanten van de 7805 te staan)
Ik gebruik de AVCC maar niet de AREF. (weet niet goed wat ik daar mee aan moet)

Alles werkt dus wel maar als ik geprogrammeerd heb dat de stappen moter naar boven moet draaien met het cijfer 2, dan is dat nu de ene keer de toets 2 en dan weer es de toets 3.

Enig idee,

merci...


A-ref aan de referentie hangen (meestal gewoon 5 volt dus )
An amplifier is just a modulator for a power supply
2N3055

Het hangt er een beetje vanaf welke referentie je hebt gekozen in de software wat je met de A-ref pin doet.
Heb je 1 v/d interene referenties gekozen dan moet de A-ref pin met een c'tje van 10N aan de Gnd hangen. (datasheet pagina 205)
Avcc dien je moet een spoeltje van 100uH aan de vcc te hangen en een 10N aan de gnd. (datasheet pagina 214)
[Bericht gewijzigd door 2N3055 op 5 september 2008 12:05:40]
www.evertdekker.com
yogib3ar

quote:
Op 5 september 2008 11:48:04 schreef Gerwin:
[...]

A-ref aan de referentie hangen (meestal gewoon 5 volt dus )


Dat kan zonder problemen zo rechtstreeks aangesloten worden, hoeft niets tussen of zo?
(ik zal es even verder zoeken naar die Ref, want als dat de oplossing is!)

Alvast bedankt..

PS: ik had als ct'jes bij de voedingspennen in gebruik dus dat was niet de oplossing!
pros

Je kan uit 3 referentiespanningen kiezen:

1) De AREF-pin wordt als referentie gebruikt. Je moet daar dus zelf een spanning op plaatsen.

2) De spanning op de AVCC-pin dient als referentie.

3) De interne 2.56V-referentiespanning wordt gebruikt.

In elk van de drie gevallen moet je tussen de AREF-pin en AGND een C plaatsen. 10n, 100n, maakt niet zoveel uit.
Een stijgtijd van 1V/nS komt overeen met 3600000000000V/h. Pros Robaer (1995)
yogib3ar

quote:
Op 5 september 2008 12:40:16 schreef pros:
Je kan uit 3 referentiespanningen kiezen:

1) De AREF-pin wordt als referentie gebruikt. Je moet daar dus zelf een spanning op plaatsen.

2) De spanning op de AVCC-pin dient als referentie.

3) De interne 2.56V-referentiespanning wordt gebruikt.

In elk van de drie gevallen moet je tussen de AREF-pin en AGND een C plaatsen. 10n, 100n, maakt niet zoveel uit.


Moet ik dan de ARef ook nog aan zetten of zo? want alleen een vcc op Aref maakt niet uit, ik kan dat n.l. niet 1 2 3 vinden in de manual.
gewoon een c'tje op Aref naar de gnd help wel iets, zeker voor de lagere voltage conversie, maar dus niet genoeg.

Je hebt het over de interne en externe spanning, dus lijkt er op dat je dat wel moet selecteren?

Ik lees in de atmega16 manual:
"If the user has a fixed voltage source connected to the AREF pin, the user may not use the other
reference voltage options in the application, as they will be shorted to the external voltage. If no
external voltage is applied to the AREF pin, the user may switch between AVCC and 2.56V as
reference selection. The first ADC conversion result after switching reference voltage source
may be inaccurate, and the user is advised to discard this result."

Wat mij zegt dat als ik de spanning aansluit op Aref, dat de anderen dan automatisch gedisabled worden, echter dan lees ik ergens anders op het web:

To initialize we will set the appropriate registers starting from the ADMUX register.
The ADMUX looks like this.



7 6 5 4 3 2 1 0
REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

REFS1 and REFS0 help us to set the voltage reference source. We have options of using the following voltage references
1. Voltage at AREF pin (REFS1=0 & REFS0=0)
2. AVCC as the reference pin (REFS1=0 & REFS0=1)
3. Internal 2.56 Voltage reference (REFS1=1 & REFS0=1)
For our purpose we shall set it as 00 where AREF is at 5V.

wat er dus op lijkt dat het wel ingesteld moet worden.

Ik ben dus een beetje in limbo...

Kun je me hierbij dan dus ook op weg helpen?
pros

Je moet softwarematig de keuze maken. Bijvoorbeeld, als je ADC0 selecteert en AVcc als referentie wil gebruiken, moet je enkel Bit6 van ADMUX hoog maken.
Het spreekt daarbij vanzelf, dat je geen externe spanning op AREF moet (mag!) plaatsen, als je een interne referentie gebruikt.

Wat de rest van je probleem betreft, enkele maatregelen die kunnen helpen:
Spoeltje tussen 9V en 7805; elco 470µF + keramische C 100n bij de 7805.
Spoeltje tussen 7805 en AVcc, zoals 2N3055 aangeeft. C tussen AVcc en GND.
De GND en de AGND v/d AVR rechtstreeks naar de GND v/d voeding. Idem met de GND van het stappenmotor-gedeelte, zodat beide GND-aansluitingen enkel bij het voedingspunt met mekaar contact maken.

Als de print(en) al gemaakt is (zijn), is het ene al moeilijker uit te voeren dan het andere. Maar alle beetjes helpen.
Een stijgtijd van 1V/nS komt overeen met 3600000000000V/h. Pros Robaer (1995)
yogib3ar

quote:
Op 5 september 2008 21:15:56 schreef pros:
Je moet softwarematig de keuze maken. Bijvoorbeeld, als je ADC0 selecteert en AVcc als referentie wil gebruiken, moet je enkel Bit6 van ADMUX hoog maken.
Het spreekt daarbij vanzelf, dat je geen externe spanning op AREF moet (mag!) plaatsen, als je een interne referentie gebruikt.

Wat de rest van je probleem betreft, enkele maatregelen die kunnen helpen:
Spoeltje tussen 9V en 7805; elco 470µF + keramische C 100n bij de 7805.
Spoeltje tussen 7805 en AVcc, zoals 2N3055 aangeeft. C tussen AVcc en GND.
De GND en de AGND v/d AVR rechtstreeks naar de GND v/d voeding. Idem met de GND van het stappenmotor-gedeelte, zodat beide GND-aansluitingen enkel bij het voedingspunt met mekaar contact maken.

Als de print(en) al gemaakt is (zijn), is het ene al moeilijker uit te voeren dan het andere. Maar alle beetjes helpen.



Bedankt voor je suggesties, maar het maakt dus niks uit wat ik ook extra toevoeg. ik blijf 0,3 volt extra krijgen waardoor de ADC conversie niet meer goed werkt.(ik werk nog op een breadboard dus veranderingen zijn snel uit te voeren)
Ik vroeg me derhalve dus af of er geen frequentie op de lijntjes staat waardoor ik extra voltage krijg, helaas is mijn scoop naar de filistijnen dus dat uit testen kan ik op dit moment niet.
Ik heb inmiddels maar naar een andere oplossing gegrepen, want ik heb het gevoel dat dit adc verhaal niet tot een goed einde te volbrengen is.
Ik heb nu een 74150 in gebruik (multiplexer) welke ik aan INT0 heb gehangen, kost helaas wel 4 lijntjes extra op de uC, maar is wel voltage onafhankelijk.

Mochten er nog ideeen zijn, dan hou ik me natuurlijk aanbevolen.

Bedankt voor jullie reakties.
Zoeken in topic