Gå til innhold

Diverse elektronikkprosjekter på gang


Anbefalte innlegg

Har satt sammen en step-down-krets basert på en MC34063(samme chip som sist), den er designet for 11-13v til 5v/300mA:

 

mc340635vschem.png

 

img8439x.jpg

 

 

Grunnen til at jeg lagde denne kretsen var fordi jeg har en klokke som drives av ett blybatteri(12v/7Ah), jeg bruker nå en LM317 for å få spenningen ned til 5v, dette er noe ineffektivt(ca. 42%) og mye av energien sløses.

 

Effektivitet ved drift fra blybatteriet:
(Last er i antall 100ohm motstander(50mA ved 5v))

Load   Vout    Iout    Vin     Iin    Eff
 0   5.160v     0m  13.02v    3mA    0.0%
 1   5.160v    51m  13.02v   29mA   69.7%
 2   5.160v   103m  13.01v   55mA   74.3%
 3   5.150v   154m  13.00v   80mA   76.3%
 4   5.150v   206m  12.99v  102mA   80.1%
 5   5.096v   254m  12.97v  129mA   77.4%
 6   5.078v   304m  12.95v  154mA   77.4%
 7   5.062v   353m  12.94v  176mA   78.5%
 8   5.054v   402m  12.92v  202mA   77.8%
 9   5.046v   451m  12.90v  227mA   77.7%
10   5.038v   500m  12.88v  253mA   77.3%
11   5.029v   548m  12.87v  280mA   76.5%
12   4.745v   547m  12.86v  275mA   73.4%


Effektivitet ved drift fra 9v adapter:
(Utenfor spec, men virker overraskende bra)

Load   Vout    Iout     Vin     Iin    Eff
 0   5.150v     0m   9.428v    3mA    0.0%
 1   5.149v    51m   9.417v   40mA   70.0%
 2   5.131v   103m   9.406v   74mA   76.0%
 3   5.083v   153m   9.397v  108mA   76.6%
 4   5.077v   202m   9.387v  145mA   75.3%
 5   5.070v   253m   9.377v  181mA   75.5%
 6   5.062v   303m   9.366v  211mA   77.6%
 7   5.055v   351m   9.356v  247mA   76.8%
 8   5.046v   399m   9.345v  283mA   76.1%
 9   5.039v   450m   9.335v  322mA   75.4%
10   5.031v   498m   9.324v  357mA   75.3%
11   4.720v   521m   9.325v  354mA   74.5%
12   4.418v   534m   9.327v  346mA   73.1%

 

-

Kolbjørn

Lenke til kommentar
Videoannonse
Annonse

Hallo.

Angående SOA, så tror jeg det går greit bare du er i ballparken.

Ved 4700uF, 350v, 1 ohm og t=4,7mS så er det snakk om 350 A

Men dette er jo kun en "peak" eller "burst", så effekten over tid er liten.

Dreiv å søkte endel rundt på nettet og kom over at jeg kunne lage meg en current-transformer for å måle dette, så sagt som gjort:

 

img8445om.jpg

 

Jeg slengte 100 runder 25AWG rundt en toroid med ett air-gap(prøvde uten i går, det ble noen rare resultater...), dette skal gi rundt 1A per 100A primærstrøm, legg en 1ohm motstand over det og du har 1v per 100A(her går vi ut ifra at vi har 100% overføring av effekt og ingen tap, det er heller ikke gjort noen form for kalibrering, så resultatene er ballpark).

 

Her er resultatet:

 

flashpulses.png

 

Vi kan se at ved 60uF får vi en puls på rundt 180-190A som daler i ca 150us.

Ved 120uF øker strømmen til rundt 310A og lengde 200us.

Ved 180uF øker vi ytterligere til 350A og lengde 250us.

Ved 240uF er vi oppe I rundt 360A med en lengde på 300us.

Ved full pupp(300uF) får vi 360A med lengde 300us, dog gjennomsnittlig høyere strøm enn ved 240uF.

 

 

Siden dette er ballpark resultater kan vi si at vi må tåle minimum 400A over 300us, jeg tenker på å bruke to stk per lampe, da trenger de ikke være så sinnsykt rått speccet og vil da ha en mye lavere pris, noe å tenke på iallefall.

 

-

Kolbjørn

Lenke til kommentar

Tøft..

Iflg kalkulatoren så er 300v 300uf og t=300uS så blir resistansen 1 ohm, og strømmen 300A.

Stemmer jo sånn høvelig!

 

Blir spennede å se hvordan det går og stoppe utladingen. Har du pekt deg ut noen IGBT'er? I hvilken pakke isåfall?

Lenke til kommentar

Blir spennede å se hvordan det går og stoppe utladingen. Har du pekt deg ut noen IGBT'er? I hvilken pakke isåfall?

Har ikke kommet så langt.

Hadde vært greit å fått de i en høvelig liten pakke, men med så store strømmer er vel det litt mye å håpe på. Har sett litt rundt, men de fleste får en SOA begrensning ved 300v på rundt 10-20A, som helt klart blir litt knapt. Eller blir det feil å regne slik siden mesteparten av spenningen vil ligge over røret?

 

Jeg ser i On-Semiconductors app-note AND8320/D at de bruker en RJP4002ASA til en slik applikasjon, den er kun speccet til en 150A pulse(400uF), de oppgir dog ikke SOA data på denne. Nå bruker de dog også ett knøttlite rør beregnet som strobe, men det er jo relativt like operasjoner vi snakker om.

 

-

Kolbjørn

Lenke til kommentar
  • 3 måneder senere...

Da var man litt tilbake i elektronikkverden etter en noe lang sommerferie.

 

Har holdt litt på med RC-helikopter i sommer og måtte dermed gå igang med en lader som kunne lade flere batterier samtidig.

Ett av målene med prosjektet er også at det ikke skal være så stort, så smd er påkrevd.

 

4xlipolader.png

 

 

4xlipoladerpcb.png

 

 

img8779om.jpg

 

 

img8780h.jpg

 

 

 

Noe hårete lodding, glemte helt å bruke flussmiddel...

Kretsen er rett og slett bare 4 identiske li-po ladekretser av samme type jeg har laget tidligere(basert på MCP73831) som er stilt inn på 500mA ladestrøm per "kanal".

 

 

Framtidige planer er å skaffe ett MiniCP helikopter, sette inn børsteløse motorer med egenkomponerte kontrollere(ESC). Har bestilt børsteløs motor(C05M) som jeg skal bruke i designfasen/debuggingsfasen av kontrolleren.

 

-

Kolbjørn

Lenke til kommentar

Kvelden gikk til å lese seg litt opp på kontrollering av brushless motorer og kobling av krets:

 

img8782q.jpg

 

 

Motoren er fra en gammel cdrom, den blir kontrollert av en atmega48 via 3x halvbroer med PNP/NPN. Koden er foreløpig bare en loop med av og på kommandoer samt litt venting. Planen er å detektere "zero crossover back emf" for å vite når man skal hoppe videre.

 

-

Kolbjørn

Lenke til kommentar
  • 2 uker senere...
  • 2 uker senere...

Da har postmannen vært her med pakke for mouser!

Fikk for det meste mosfets, der noen var i smd utførelse.

For å teste de ble det etsing/bygging av breakoutboards:

 

img8863y.jpg

 

 

Her er en to-220 mosfet tatt med for størrelse-eksempel.

En av de jeg loddet fast er sett nede til høyre.

 

Mosfetene jeg brukte er:

N-channel: IRFTS8342TRPBF 8.2A/30v/19mOhm

P-channel: SI3473CDV-T1-GE3 8.0A/12v/22mOhm

 

 

Slik så det ut etter lodding:

 

fets.jpg

 

 

 

Rakk akkurat å teste det litt før jeg måtte på jobb og resultatet er strålende,

faktisk så strålende at motoren får for mye strøm... Noe jeg må se på.

 

 

-

Kolbjørn

Lenke til kommentar

Du må kanskje lage en detektorkrets som sier fra når blinkekretsen slutter å virke? :-P

Hehe, tror det blir visuell deteksjon av dette, blir litt att-fram å lage en krets som bruker masse strøm for å måle når en krets som bruker minimalt med strøm har brukt opp batteriet sitt :p

 

-

Kolbjørn

Lenke til kommentar

Fikk en ESC i dag, skal bruke denne i utviklingen av min egen, se hvordan den gjør tingene og prøve å etterligne.

 

img8902xr.jpg

 

img8903t.jpg

 

Den er tiny i alle fall, virker gjør den også, faktisk så godt at jeg har problemer med å feste propellen godt nok...

 

-

Kolbjørn

Lenke til kommentar

For å få testet ESC-en måtte jeg lage meg en servotester siden signalet inn er samme signal som en servo trenger, altså en puls mellom 1ms og 2ms ca 50 ganger i sekundet(20ms total lengde). Dette ser sånn ca slik ut:

 

servosignal.png

(Minimum utslag, eventuelt motor stopp.)

 

servosignal2.png

(Maksimum utslag, eventuelt full pupp.)

 

 

Jeg brukte en ATMega48 for prosjektet, mest pga at jeg hadde en liggende.

Prosjektet består av en software-pwm bit og en ADC-bit, jeg leser av ett potmeter som går fra 0-VCC med ADC-en og justerer pulslengden mellom 1mS og 2mS basert på det.

 

Krets:

 

servotester.png

 

 

Kode:

 

 

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

volatile uint16_t adcValue = 0;

void initADC(void)
{
//ADC prescaler 128
ADCSRA |= (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2);
//Enable ADC
ADCSRA |= (1 << ADEN);	
//Free running ADC
ADCSRA |= (1 << ADATE);
//ADC Interrupt enable
ADCSRA |= (1 << ADIE);
//Start ADC
ADCSRA |= (1 << ADSC);
}

void init(void)
{
//Output on PD0
DDRD |= (1 << DDD0);

//Set up CTC mode on Timer 1
TCCR1B |= (1 << WGM12);
//We count from 0-50k
OCR1A = 50000;
//Zap timer
TCNT1 = 0;
//Start the timer running, 8 prescaler
TCCR1B |= (1 << CS11);
//Interrupt compare match A enable
TIMSK1 |= (1 << OCIE1A);
//PD0 initial on
PORTD |= (1 << PORTD0);
//Enable interrupts
sei();
}

int main(void)
{
init();
initADC();
while(1)
{
	//Turn off PD0 on timer
	if(TCNT1 > (2500 + (adcValue * (float)2.44)))
		PORTD &= ~(1 << PORTD0);
}
return 0;
}

ISR(TIMER0_COMPA_vect)
{
//Turn on PD0 on timer reset
PORTD |= (1 << PORTD0);
}

ISR(ADC_vect)
{
//Grab ADC value
adcValue = ADC;
}

 

 

 

Alt i alt ett ganske enkelt prosjekt som fungerte strålende. Det er brukt float i koden, så ferdigkompilert ble det noe stort(1108bytes), kunne sikkert bygd meg rundt akkurat det, men jeg kom bare opp til 27.1% bruk av tilgjengelig plass, så det var ikke noe stort behov.

 

-

Kolbjørn

Lenke til kommentar

Satt sammen ett prosjekt jeg har tenkt på lenge, noen har sikkert fått med seg at jeg har en batterilader basert på en lm317 og en opamp. Denne brenner all spenning over det den er satt til som varme og er egentlig veldig lite effektiv. Så en switcher hadde egentlig gjort seg.

 

 

Dette er da en SMPS basert på en MC34063, step down fra 19v til 13.7v med strømbegrensning på rundt 300mA:

 

mc34063sla.png

 

 

Bygde kretsen på ett breadboard:

 

img8906k.jpg

 

 

Fungerer gjør den også, akkurat nå lader jeg batteriet med ~60mA(ganske full-ladet).

 

 

-

Kolbjørn

Lenke til kommentar

Tenkte jeg skulle forklare litt om hvordan MC34063 gjør spennings-reguleringen sin.

(Alle komponentnavn er tatt ifra skjemaet i posten over).

 

Spenningen ut(ved C3) kjøres igjennom en spenningsdeler(R2 og R3) og inn på pinne 5. Der sammenlignes den med en intern spenning på 1.25v, hvis spenningen inn på pinne 5 er lavere enn 1.25v økes spenningen ut, er den høyere senkes spenningen.

 

En spenningsdeler fungerer på denne måten:

 

Resistive_divider.png

 

p><p>

 

Vout er da i dette tilfellet 1.25v(siden kontrolleren justerer Vin for å få 1.25v Vout).

For å få Vin alene må vi omgjøre litt på formelen:

 

p><p>

 

Så deler vi begge sider på Vin for å flytte den til andre siden

 

p><p>

 

Så bytter vi topp og bunn på begge brøkene

 

p><p>

 

For så å flytte 1.25 over til andre siden

 

p><p>

 

Og setter inn verdiene i skjemaet samt svaret:

 

p><p>

 

OBS: Ble en noe rotete formel, er sikkert noen som kan gjøre dette på en enklere måte(uten en trippelstack med brøk...), om det er så gjerne kom med noen hint.

 

EDIT: Etter noe konferering med noen på irc(freenode.net ##electronics) ble formelsnuingen noe ryddigere...

 

-

Kolbjørn

Endret av CoolBeer
  • Liker 1
Lenke til kommentar

Som noen sikkert har fått med seg driver jeg litt med rc-helikoptre. Jeg har også skaffet en brushless DC motor jeg driver å forsker på. Noe jeg har tenkt på er å bytte ut halerotor-motoren i helikopteret mitt med brushless-motoren(C05M) jeg har skaffet.

En ting som da dukker opp er hvordan å konvertere signalet fra mottakeren(det som går til brushed-motoren) over til servo-signalet som en esc skal ha. Brushed-signalet er gjerne pwm og esc-en vil ha ett ordentlig servo-signal(se tidligere post).

 

Løsningen jeg tenker på er å hive inn ett lavpassfilter(RC) for å gjevne ut pwm-pulsene, for så å fore dette inn i en uC via ADC. Når jeg har en ADC-verdi kan jeg bruke denne til å lage ett servo-signal som esc-en forstår.

 

En ting jeg oppdaget når jeg koblet meg på mottakeren til helikopteret mitt(utenfor helikopteret vel og merke), er at den må ha en viss last for å lage pwm, uten last blir signalet konstant full pupp, så jeg må finne en balansegang imellom strømtrekk og signalstyrke. Hvis jeg kobler inn en motor blir signalet egentlig veldig normalt, men da blir det jo som å kjøre to motorer samtidig(brushed og brushless), det kan vi jo ikke ha noe av.

 

Jeg leker med tanken på å bruke en ATtiny10 som konverter, den har innebygget ADC og jeg har den i sot-23-6(relativt smått). Den er dog ett problem å programmere denne, må bruke "Atmel Tiny Programming Interface", ser ikke ut som verken STK500 eller Dragon støtter dette, blir vel ett nytt prosjekt å hive sammen noe som fungerer...

En annen ting er at jeg må skrive om koden noe, ATtiny10 har bare halve registeret sammenlignet med en "vanlig" AVR, det gjør at å kode c/c++ blir noe verre, dog skal det være mulig. Jeg kan nok bare glemme å bruke float, på ATmega48-en jeg bruker som testbed kommer koden opp i over de 1024 bytes(1kB) ATtiny10 har til rådighet.

 

Har en fungerende testkrets liggende på benken min da, mottaker -> RC-filter -> ADC(ATmega48) -> ESC -> brushless-motor. Riktignok er denne kretsen plugget i hovedmotor-kontakten, men det er mest pga at mottakeren prøver å kjøre halerotoren på full pupp helt til den snur helikopteret litt, noe blir litt vanskelig når det hele ligger på pulten min...(uten helikopter for øvrig).

 

Motor:

 

img8940q.jpg

 

 

Fullt setup:

 

img8939t.jpg

 

 

 

-

Kolbjørn

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å
×
×
  • Opprett ny...