Gå til innhold

Diverse elektronikkprosjekter på gang


Anbefalte innlegg

Da har man laget en liten oversikt over hvordan en glattekondensator påvirker den likerettede spenningen fra diodebroen:

massekondensatorer.png

 

Merk at de to siste har en annen vertikal skala siden 4v/div ble litt vel stort. På siste måtte jeg også bruke ett digitalt filter for å få bort noe høyfrekvent støy.

Legg merke til Vpp ettersom vi går opp i kapasitans, nå er selv 32.8mV noe jeg vil definere som relativt mye rippel, men så er jeg litt kresen på akkurat det da...

 

 

Har også "oppgradert" oscilloskopet til 100Mhz, har ingen så høye frekvenskilder, men jeg kan velge 2ns/div iallefall(imot 5ns/div tidligere).

 

-

Kolbjørn

Lenke til kommentar
Videoannonse
Annonse

Nye data, denne gangen med endel kapasitans:

kapasitans.jpg

 

Totalt 5x4700uF + 1x470nF = 23500.47uF = 23.50047mF

 

Resultat:

literippel.png

 

Delen til venstre er uten lavpassfilter aktivert i skopet, litt usikker på hvor mye er støy som blir plukket opp på veien fra kretsen og inn. Med lavpassfilter ser det egentlig lekkert ut, 4mV rippel er egentlig ikke så veldig mye, men det måtte 23mF til... Egentlig hadde det vært bedre å komme under 1mV, men usikker på om jeg bare måler støy da...

 

Skal hive sammen en kapasitansmultiplier for å se, kommer straks tilbake med mer.

 

-

Kolbjørn

Lenke til kommentar

Da var det gjort, 1x4700uF + kapasitansmultiplikator med en 220uF kondensator:

minimum.png

 

Merk, dette er med ganske grov filtrering av spenningen, dc-spenningen er også filtrert bort. Men her ser vi at en kapasitansmultiplikator slår rimelig hardt ifra seg. Nå er det riktignok visse ulemper med en slik krets, vi får ikke samme strømoverskudd som ved bruk av større kondensatorbanker, vi vil miste minst 0.6v over transistoren, vi har en transistor som må tåle effekten kretsen blir utsatt for og flere deler = høyere kostnad, for å nevne noe.

 

-

Kolbjørn

Lenke til kommentar

Siden jeg ikke kunne bruke ATtiny2313 til spenningsregulatoren må jeg igang med å lage en header til ATmega48, som er alternativet jeg har liggende.

ATmega48-ene jeg har liggende er i PDIP-28 innkapsling og her er hva jeg har kommet fram til:

 

 

mega48headerschem.png

mega48headerboard.png

 

 

 

Helt standard oppsett som resten egentlig, la på en elektrolytt over vcc og jord i tillegg til den keramiske kondensatoren. Jeg har bare 10Mhz utgaven av mega48, så krystallen må bli deretter, trenger egentlig ikke ekstern krystall til dette prosjektet, men slenger inn en på headeren ettersom den skal kunne brukes til andre prosjekter også.

 

Kommer tilbake med mere etter bygging.

 

-

Kolbjørn

Lenke til kommentar

Spenningsregulator litt utviklet:

autoregul.jpg

 

Kretsen som tar PWM signalet og gir meg regulert spenning ut ser slik ut:

kretslikerett.png

 

V1 er stand-in for PWM-utgangen på ATmega48-en, R1+C1 og R7+C6 er lavpassfilter som mer eller mindre konverterer PWM-signalet om til DC. Dette trør vi inn til resten av kretsen der forsterkningen(gain) er gitt av (R2+R4)/R2. C2 og C3 er lagt inn for litt ekstra filtering av eventuell igjenværende rippel. Egentlig en blåkopi av tuxgraphics sin krets med andre ord :p

 

Utenom skjemaet har jeg koblet en spenningsdeler bestående av to motstander, 3k3 og 2k4, disse deler spenningen ned slik at microkontrolleren kan ha litt feedback for å justere spenningen med.

 

I software har jeg satt opp regulering innenfor 0.1v, den sliter litt hvis jeg setter spenninga til å være høyere enn den kan gi, må legge inn en sperre for det etterhvert.

 

Litt usikker på hvordan jeg skal legge opp displayet, vurderer på en "mode" knapp for å sirkulere igjennom informasjon. Har også tenkt på mulighetene for ett tommelhjul av no slag for øking og senking av spenning, var ikke så veldig mye fint å se på ebay av akkurat det, får se hva jeg finner på.

 

 

WARNING: Horribel kode hivd sammen i en fei:

 

 

#include <avr/io.h>
#include <avr/interrupt.h>

#include "lcd.h"


static volatile uint32_t voltage, adc;
static volatile uint8_t voltsH, voltsL;
static volatile uint16_t setVoltage = 100;

const char tall[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

void init(void)
{
InitLCD(0);
LCDClear();
DDRD |= (1 << PD6);
OCR0A = 70;
TCCR0A |= (1 << WGM00) | (1 << WGM01) | (1 << COM0A1);
TCCR0B |= (1 << CS00);
ADCSRA |= (1 << ADEN);
ADCSRA |= (1 << ADATE) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADIE);
ADMUX |= (1 << MUX2) | (1 << ADLAR);
ADCSRA |= (1 << ADSC);
sei();
}

void updateDisplay(void)
{
char tnall[4];
uint16_t rVoltage = voltage;
uint8_t teller = 0;
while(teller++ != 4)
{
	tnall[4 - teller] = tall[rVoltage % 10];
	rVoltage /= 10;
}
LCDWriteStringXY(0, 0, "PWM:");
LCDWriteIntXY(5, 0, OCR0A, 3);

LCDWriteStringXY(0, 1, "V[");

char tm[3] = {tnall[0], tnall[1], '\0'};
LCDWriteString(tm);
LCDWriteString(".");

tm[0] = tnall[2];
tm[1] = tnall[3];
LCDWriteString(tm);
LCDWriteString("]");



LCDWriteIntXY(10, 1, setVoltage, 4);

}

int main(void)
{
static volatile uint16_t lcdDelay, voltageDelay;
static volatile uint16_t debounceUp, debounceDown;
init();

while(true)
{
	uint8_t dPins = PIND;
	if(++voltageDelay == 10000)
	{
		uint16_t newVoltage = (voltage /10) * 10;
		if(newVoltage > setVoltage)
			--OCR0A;
		else if(newVoltage < setVoltage)
			++OCR0A;
	}
	else if(voltageDelay > 10000)
		voltageDelay = 0;

	if(++lcdDelay == 20000)
	{
		updateDisplay();
	}
	else if(lcdDelay > 20000)
		lcdDelay = 0;

	if(!(dPins & (1 << PD7)))
	{
		if(++debounceUp == 20000)
			setVoltage += 10;
		if(debounceUp > 20000)
			debounceUp = 0;
	}
	else if(!(dPins & (1 << PD5)))
	{
		if(++debounceDown == 20000)
			setVoltage -= 10;
		if(debounceDown > 20000)
			debounceDown = 0;
	}

	if(dPins & (1 << PD7))
		debounceUp = 0;
	if(dPins & (1 << PD5))
		debounceDown = 0;



}
return 0;
}


ISR(ADC_vect)
{
voltage = (static_cast<uint32_t>(ADCH) * 500) >> 8;
voltage *= 2432;
voltage = voltage >> 10;
voltage += 5;

adc = ADCH;
}

 

 

 

-

Kolbjørn

Lenke til kommentar

Driver å vurderer om jeg skal bytte fra Eagle til gEDA. Eagle er tross alt ett kommersielt produkt med visse begrensninger i gratisutgaven.

Har lekt meg litt med gEDA og det ser relativt greit nok ut, trenger litt tid for å få noe til enda.

 

Bilde:

 

testkrets.png

 

-

Kolbjørn

Lenke til kommentar

Hvordan er komponent biblioteket i gEDA? Mye komponenter tilgjengelig (slikt som i Eagle)? Steder å laste ned fra? Enkelt å lage selv?

 

Har tenkt på å prøve det ut selv, men bruker Altium på jobb, og kan Eagle fra før, så terskelen for å gidde å lære enda et program er ikke akkurat lav... vurderer å kjøpe Eagle, men bør kanskje ta en titt på gEDA først...

Lenke til kommentar

Hvordan er komponent biblioteket i gEDA? Mye komponenter tilgjengelig (slikt som i Eagle)? Steder å laste ned fra? Enkelt å lage selv?

 

Har tenkt på å prøve det ut selv, men bruker Altium på jobb, og kan Eagle fra før, så terskelen for å gidde å lære enda et program er ikke akkurat lav... vurderer å kjøpe Eagle, men bør kanskje ta en titt på gEDA først...

 

Beklager digresjonen, men jeg lurer på hva ditt inntrykk av Altium er? Vi gikk også over til dette på jobb nylig, og selv om mye er bra så syns jeg at layout-delen er heller dårlig. Blir alt for mye knot under rutingen, særlig om man er interessert i å skyve traces litt frem og tilbake. Vi driver nå og snuser på PADS isteden, som jeg tror er betydelig bedre på den fronten.

Lenke til kommentar

Jeg har sett litt på denne tråden nå og da, og jeg er imponert over alt arbeidet som er lagt ned! Så vidt jeg har forstått, har mye dreid seg om å filtrere og booste et pwm signal fra en microcontroller til bruk i en PSU. Spørsmålet mitt er kansje dumt, men hvorfor ikke la controlleren sende et digitalt signal til en DAC? Denne kunne i sin tid styre en konvensjonell (lineær) spenningsregulator.

Lenke til kommentar

...hvorfor ikke la controlleren sende et digitalt signal til en DAC? Denne kunne i sin tid styre en konvensjonell (lineær) spenningsregulator.

Where is the fun in that? :new_woot:

 

Tja-. Jeg er nok mer opptatt av funksjonalitet enn av "fun", men jeg kan jo forstå poenget.

Lenke til kommentar

"Skyte spurv med kanon" - Han er jo fan av det :new_woot:

Jepp, hvorfor gjøre det lett når man kan gjøre det komplett umulig :D

 

 

Lagde en liten oversikt over hva er hvor på breadboardet mitt:

topdownp.jpg

 

5v ut fra den strømforsyninga jeg bruker(5v og 12v sak) var så horribel at jeg satte inn en LM78L05 i kretsen. LM78L05 er en TO92 utgave av den større LM7805 regulatoren, den er spesifisert til "bare" 100mA, men i dette tilfellet er det plenty(tror jeg, den blir dog litt varm, måling av strøm? Hvem er det?).

 

Ellers bringer egentlig ikke bildet noe nytt til bordet.

 

 

gEDA har jeg bare kommet meg noen vei med skjema delen av programpakken. Er vistnok veldig mange ferdige komponenter på http://www.gedasymbols.org.

 

-

Kolbjørn

Lenke til kommentar

Jeg sitter og kikker på en Adruino UNO, er dette noe å satse på bare for å lære seg litt basic stuff?

Jeg ville heller ha gått for BoArduino egenklig:

http://www.adafruit.com/index.php?main_page=index&cPath=19

Det er samme microkontrolleren med samme boothloader og man bruker samme programmet for å programmere den, men fordelen med BoArduino er jo at den passer ned i et standard "fomlebrett" (breadboard) og det blir derfor mye enklere å koble opp for å exprimentere litt. Så slipper man lange ledningskaos fra arduinoen til fomlebrettet og man slipper et løst arduino som ligger å slenger på siden av fomlebrettet, eller bruke de håpløst små breadboardsa man får som passer oppå arduinoen.

 

Og prisen på BoArduino er jo bra billig også!

 

Husk at hvis du kjøper en DC Boarduino må du også kjøpe med en USB til FTDI kabel for å kunne koble den til PCen og en strømmforsyninger også greit å kjøpe med pluss en passelig størrelse med "breadboard" (der er alltid en fordel å kjøpe en større størrelse av breadboard enn det du tror du kommer til å bruke så du ikke ender opp med å gå tomm for plass under et prosjekt)

 

Også er det jo en grei måte å starte å lodde litt på også da man må lodde sammen BoArduino selv.

Endret av flesvik
Lenke til kommentar

Jeg sitter og kikker på en Adruino UNO, er dette noe å satse på bare for å lære seg litt basic stuff?

Om du skal læra deg basic stuff, så ville eg anbefalt å kikka etter et passelig eksperimentkort på ebay. Der kan du få alle nybegynnar og meir avanserte prosjekt på eit brett, slik at du slepp å kobla opp ein masse for å lera deg ting. Mange av bretta har veldig mykje forskjellig. Diodar, brytarar, 7-segment, lcd interface for vanlig HD44780 display, DB7 for serial med pc osv. Alt på eitt brett.

Vil absolutt anbefala det om ein er litt "lat" og ikkje giddar og kopla alt opp på koplingsbrett :p

Lenke til kommentar

Her er et eksempel på hvordan mitt koplingsbrett ser ut akkurat nå med boarduino på:

image.jpg

(har tatt bort en del ledninger pga litt omkobling og måling av en ultralyd sensor sitt PWM signal)

 

Så her ser du hvor praktisk det er med boadruino istedenfor å ha en arduino liggendes ved siden av koblingsbrettet. Og du ser også at man burde ha litt størrelse på koblingsbrettet sitt for ikke å gå tomm for plass.

 

BoArduino har kunn "through-hole" lodding så det er lett og lodde det sammen (men jeg liker ikke det faktum at resistorene "står opp" fra printkortet)

Endret av flesvik
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...