Gå til innhold

Diverse elektronikkprosjekter på gang


Anbefalte innlegg

Det meste er hovedsaklig kjøpt fra mouser.com og digikey.com, resten er hentet ifra ebay, electrokit.se, futurlec.com eller krepro.no.

 

Hvordan får du varene levert fra digikey?

 

Jeg kjøpte en god del deler derfra engang, godt over 200kr, og måtte selvfølgelig betale moms, det var jeg klar over, men jeg endte også opp med å betale en formue i fortollingsgebyrer. Trur det var UPS som leverte, og jeg måtte betale fortollingsgebyr per opprinnelse land for varene jeg bestilte... Jeg endte med å betale mer i gebyr enn det varene kostet, og det har jeg ikke tenkt å gjøre igjen...

Lenke til kommentar
Videoannonse
Annonse

Hvordan får du varene levert fra digikey?

 

Jeg kjøpte en god del deler derfra engang, godt over 200kr, og måtte selvfølgelig betale moms, det var jeg klar over, men jeg endte også opp med å betale en formue i fortollingsgebyrer. Trur det var UPS som leverte, og jeg måtte betale fortollingsgebyr per opprinnelse land for varene jeg bestilte... Jeg endte med å betale mer i gebyr enn det varene kostet, og det har jeg ikke tenkt å gjøre igjen...

 

Dette høres skummelt ut, har ikke fått regninga enda, men krysser fingre for kun moms ja.

 

 

Dagens prosjekt er en +- justerbar strømforsyning basert på lm317/lm337 regulatorer. Jeg trengte +-9v for hodetelefon-forsterker testing og jeg hadde rivd opp breadboardet jeg hadde 317/337 på, så hvorfor ikke hive sammen en liten krets. Man har alltids bruk for en strømforsyning, iallefall en justerbar en.

Spenningen er justerbar fra ca. 2.5v til 15v, vi kjører 100 Ohms motstander og 1k potmeter. Dette gir oss 100-1100 Ohm justering fra ADJ-pinnen til jord, og 100 Ohm fra OUT til ADJ.

 

Skjema:

 

dualsupplyschem.png

 

 

Og ferdig:

 

img4835hm.jpg

 

 

In other news:

Har snekret sammen en liten forsterkerkrets for en sub jeg har liggende, det er mer eller mindre samme krets som hodetelefonforsterkeren jeg posta om tidligere, bare at denne kjører på +-40v og har dobbelt utgangstrinn-transistorer(MJL21193/MJL21194). Den skal(under forutsetning at strømforsyningen holder seg på +-40v) klare ca. 150W i 4 Ohm og rundt 80W i 8 Ohm(dette ved ca. 400mV inn og under forutsetning at printbanene på kortet ikke smelter). I realiteten er nok utgangseffekten noe lavere grunnet spenningsfall i strømforsyning, komponenter og printbaner.

 

Bilde:

 

img4836m.jpg

 

 

Legg merke til strømforsyninga som enda ikke har kommet seg forbi prototype-stadiet.

Forsterkerer en plenty sterk for mitt bruk, den driver en 12" MTX sub relativt godt.

 

Planene framover for forsterkeren er å legge til noe logikk som power-on-delay, utgangs-relé, kortsluttnings-sikring og automatisk shutdown ved DC ut.

 

-

Kolbjørn

Lenke til kommentar

La til en ny funksjon på transistor-testeren, ett frekvensmeter:

 

img4837l.jpg

 

 

Planen er å bruke kretsen til høyre på bildet som ett LC-meter, det generer en frekvens basert på spolen og kondensatoren rundt LM311-en. Dette kan så regnes om til størrelsen på spolen eller kondensatoren. Dette under forutsetning at jeg får plass til koden, er oppe i 3598 bytes (87.8% Full) foreløpig.

 

-

Kolbjørn

Lenke til kommentar

Du har ikke lyst til å fortelle hva slags kjemikalier du bruker når lager PCB-kort, samt hvor lenge du utsetter kortene for UV-stråling?

Kortet blir belyst i 5 minutter(bungard positiv resist), har prøvd noe no-name fra ebay også, ble tre minutter der.

 

For framkalling bruker jeg NaOH(kaustist soda), 1g per dl vann. Det går ca 30 sekunder før overflødig resist er borte.

 

Etsingen skjer ved hjelp av FeCL3(jernklorid), oppvarmet til ca. 40-50C. Jeg har blandet inn litt HCL(Saltsyre) for å forlenge bruken av oppløsningen.

 

-

Kolbjørn

Lenke til kommentar

Coolbear, jeg har lyst til å lese meg litt opp på forsterkere, Du hadde noen bøker du har lest? Hvor finner jeg disse? :D

Har lest tre bøker om forsterkere, kan varmt anbefale to av dem, den tredje er ok.

Bob Cordell - Designing Audio Power Amplifiers

Douglas Self - Audio Power Amplifier Design Handbook

G. Randy Slone - High-Power Audio Amplifier Construction Manual

 

Disse kan vel enklest finnes på en bokbutikk, ebay, amazon eller lignende. Google burde kunne være hjelpsom med dette. *host*pdf*host*

 

 

Kveldens/nattens prosjekt:

 

img4838g.jpg

 

 

Har hele alfabetet inne som 5x7 bokstaver, hvis jeg tegner på hele skjermen bruker jeg over 100% av minne til microkontrolleren(buffer til displayet 84x48), så jeg bruker bare halvparten nå. Får vel investere i en mcu med litt mere minne :p

 

-

Kolbjørn

Lenke til kommentar

Har hele alfabetet inne som 5x7 bokstaver, hvis jeg tegner på hele skjermen bruker jeg over 100% av minne til microkontrolleren(buffer til displayet 84x48), så jeg bruker bare halvparten nå. Får vel investere i en mcu med litt mere minne :p

 

Kolbjørn

 

Antar du mener at du bruker hele SRAM minnet? Hvis du passer på at alfabetet blir lagret i flashen og ikke lastes opp i RAM, så kan du bruke en pointer til plassen det ligger på og dermed spare mye minne. Skjermen har vell sin egen innebygde buffer, så hvis du skal printe en string til skjermen lagrer du dette bare som en string, og i funksjonen som skal overføre til displayet slår den opp i flashen og finner hvordan hver bokstav skal tegnes, en etter en...

(om dette er mulig kommer kanskje litt ann på hvordan skjermen funker også da... har jo ikke lest databladet på den)...

 

bruker jeg over 100% av minne

Hvordan i alle dager får du det til? :ph34r:

 

La du merke til ordet "hvis" ?

Lenke til kommentar

Har hele alfabetet inne som 5x7 bokstaver, hvis jeg tegner på hele skjermen bruker jeg over 100% av minne til microkontrolleren(buffer til displayet 84x48), så jeg bruker bare halvparten nå. Får vel investere i en mcu med litt mere minne :p

Kult. Hvilket display er det du bruker?

Lenke til kommentar

Dr_VingTor har et veldig godt poeng. Derfor kan vi jo ta et lynkurs i "Lagring av konstanter i flash på AVR". Antar at du bruker WinAvr/AVR-GCC. Hvis ikke må du se i dokumentasjonen for din kompilator for å finne ut hvordan dette gjøres. Det er jo også mulig at jeg har oversett noe og at du har full kontroll på dette, men vi tar kurset likevel, for sikkerhets skyld :)

 

Først må de ferdiglagde flash-funksjonene i AVR-GCC gjøres tilgjengelige:

#include <avr/pgmspace.h>

Denne plasseres nær toppen i main.c eller main.h sammen med de andre #include-linjene.

 

Så må bokstavene (eller hva som helst) defineres i flash:

uint8_t degc_icon[] PROGMEM = {0x18,0x18,0x03,0x04,0x04,0x04,0x03,0x00};

Legg merke til ordet PROGMEM, det tvinger GCC til å plassere dette i flash i stedet for i SRAM.

 

Til slutt leser vi de lagrede dataene:

pixeldata = pgm_read_byte_near(&degc_icon[0]);

Denne linjen vil lese en byte, den første byten i degc_icon[]. Du vil nok erstatte den nullen med en variabel og bruke dette i en for-sløyfe. Jeg endte opp med å bruke pekermanipulasjon, husker ikke hvorfor.

 

Det finnes også funksjoner for å lese 16-bit konstanter, og en del annet.

Full oversikt over tilgjengelige funksjoner finnes i dokumentasjonen.

Lenke til kommentar

Antar du mener at du bruker hele SRAM minnet? Hvis du passer på at alfabetet blir lagret i flashen og ikke lastes opp i RAM, så kan du bruke en pointer til plassen det ligger på og dermed spare mye minne. Skjermen har vell sin egen innebygde buffer, så hvis du skal printe en string til skjermen lagrer du dette bare som en string, og i funksjonen som skal overføre til displayet slår den opp i flashen og finner hvordan hver bokstav skal tegnes, en etter en...

(om dette er mulig kommer kanskje litt ann på hvordan skjermen funker også da... har jo ikke lest databladet på den)...

Hele SRAM minnet gikk til buffering av display. Displayet er på 84x48 pixler, som gir oss 504 pixler totalt, ATmega48P som jeg bruker har 512 bytes minne, litt trangt. Nå hadde jeg egentlig ikke trengt å buffre hele displayminnet, displayet har som nevnt ett eget buffer. Jeg har tenkt tanken på å bare bruke en temp-buffer på 1/6 av skjermen ettersom skjermen er delt opp i 6 bytes vertikalt, da trenger jeg ikke fult så mye minne, men må generere ny temp-buffer for hver refresh.

 

Kult. Hvilket display er det du bruker?

Dette er faktisk ett Nokia display(eventuelt en klone) for en 5110/3310. Disse fås billig på ebay(fra rundt 7 dollar) og er relativt enkle å interface til(spi protokoll).

 

Dr_VingTor har et veldig godt poeng. Derfor kan vi jo ta et lynkurs i "Lagring av konstanter i flash på AVR". Antar at du bruker WinAvr/AVR-GCC. Hvis ikke må du se i dokumentasjonen for din kompilator for å finne ut hvordan dette gjøres. Det er jo også mulig at jeg har oversett noe og at du har full kontroll på dette, men vi tar kurset likevel, for sikkerhets skyld :)

 

Først må de ferdiglagde flash-funksjonene i AVR-GCC gjøres tilgjengelige:

#include <avr/pgmspace.h>

Denne plasseres nær toppen i main.c eller main.h sammen med de andre #include-linjene.

 

Så må bokstavene (eller hva som helst) defineres i flash:

uint8_t degc_icon[] PROGMEM = {0x18,0x18,0x03,0x04,0x04,0x04,0x03,0x00};

Legg merke til ordet PROGMEM, det tvinger GCC til å plassere dette i flash i stedet for i SRAM.

 

Til slutt leser vi de lagrede dataene:

pixeldata = pgm_read_byte_near(&degc_icon[0]);

Denne linjen vil lese en byte, den første byten i degc_icon[]. Du vil nok erstatte den nullen med en variabel og bruke dette i en for-sløyfe. Jeg endte opp med å bruke pekermanipulasjon, husker ikke hvorfor.

 

Det finnes også funksjoner for å lese 16-bit konstanter, og en del annet.

Full oversikt over tilgjengelige funksjoner finnes i dokumentasjonen.

Jepp, fontene er allerede lagret i programminnet, men flott med en tutorial for trengende :)

 

-

Kolbjørn

Lenke til kommentar

Har laget meg en github konto under navnet CoolBeer (https://github.com/Coolbeer) der jeg kommer til å legge ut diverse prosjekter. Foreløpig er det bare Transistor-LC-Freq meteret og ett HD44780 library der. Jeg koder i C++ og HD44780 libraryen er faktisk klassebasert. Ettersom jeg rullerer igjennom prosjektene mine kommer nok flere og flere til å bli lagt ut på github.

 

-

Kolbjørn

Lenke til kommentar

Holder på å forske litt på shift-registre, det viser seg at det var vanskelig å finne ett shift-register som har individuell tri-State(eventuelt Hi-Z, ikke tilkoblet etc). En 74HC595 kan enten være høy eller lav, source eller sink. Jeg kan bruke 4 mosfet for å konvertere de 8 utgangene til 4 med OnOff, jeg har også sett på muligheten for å bruke 74HC125/126 for jobben.

 

Løsningen jeg har valgt for dette eksperimentet er en microkontroller, nærmere bestemt en ATtiny24. Jeg har valgt Port A som output og Port B som input. Jeg har ikke implementert tri-State enda, nå fungerer det bare som ett veldig treigt shift-register, mest pga at jeg må kjøre på intern oscillator(8MHz) da jeg ikke har pinner igjen til krystallen. Jeg vurderer å oppgradere til ATtiny2313(DIP20), da kan jeg bruke ekstern krystall på 20MHz og unngå at jeg må legge inn lang delay i SPI sendingen.

 

 

 

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

/*
Inputs:
   PB0 = SCK
   PB1 = RCK
   PB2 = SER

Outputs:
   PA 0-7
*/

#define SPI_DDR DDRB
#define SPI_PIN PINB
#define SPI_SCK PB0
#define SPI_SER PB2
#define SPI_RCK PB1

void init(void)
{
   GIMSK |= (1 << PCIE1);
   PCMSK1 |= (1 << PCINT8) | (1 << PCINT9);
   DDRA = 0xFF;
   sei();      //Enable Interrupts
}

int main(void)
{
   init();
ADCSRA &= (1 << ADEN);
PRR |= (1 << PRTIM1) | (1 << PRTIM0) | (1 << PRUSI) | (1 << PRADC);
MCUCR |= (1 << SE);
   while(1)
	asm volatile ( "SLEEP" );

   return 0;
}

ISR(PCINT1_vect)
{
   bool volatile static lastSCK;
   bool volatile static lastRCK;
   uint8_t volatile static data;

   if((SPI_PIN & (1 << SPI_SCK)) && !lastSCK)                     //SCK Clocked on
   {
       lastSCK = true;
       data = data >> 1;
       if(SPI_PIN & (1 << SPI_SER))
           data |= (1 << 7);
   }
   else if((SPI_PIN & (1 << SPI_RCK)) && !lastRCK)                //RCK Clocked on
   {
       lastRCK = true;
       PORTA = data;
   }
   else if(!(SPI_PIN & (1 << SPI_SCK)) && lastSCK)               //SCK Clocked off
   {
       lastSCK = false;
   }
   else if(!(SPI_PIN & (1 << SPI_RCK)) && lastRCK)               //SCK Clocked off
   {
       lastRCK = false;
   }
}

 

 

 

Planen framover er å legge til 8 ekstra bytes for å bestemme tri-State, hvis jeg klokker 8 bytes inn før RCK ignoreres tri-State, klokkes det 16 bytes inn før RCK brukes de 8 siste til tri-State.

 

På bildet bruker jeg en ATtiny2313 til å drive en ATtiny24 med SPI, tiny24-en driver så en LED-bargraph fra 1 til 8(her på 6). Det merkes godt at tiny24-en henger litt etter, SPI koden på tiny2313-en må ha rimelig stor tvinnetommel-tid mellom hver bit.

 

 

img48362.jpg

 

 

-

Kolbjørn

Lenke til kommentar

Holder på å forske litt på shift-registre, det viser seg at det var vanskelig å finne ett shift-register som har individuell tri-State(eventuelt Hi-Z, ikke tilkoblet etc). En 74HC595 kan enten være høy eller lav, source eller sink. Jeg kan bruke 4 mosfet for å konvertere de 8 utgangene til 4 med OnOff, jeg har også sett på muligheten for å bruke 74HC125/126 for jobben.

Du kan enkelt lage en ekstra modul for tristate-utgang slik som dette:

post-87910-0-72503200-1309269245_thumb.png

Lenke til kommentar

må si du har et bra lysende breadboard... :!: intresanne prosjekter du driver med. :thumbup:

 

jeg merker kløen i fingrene til å produsere egne kretskort når jeg ser alt du får til å lage, men det får bli etter at jeg har anskaffet hus med plass til en liten arbeidsplass

Endret av haavardgj
  • Liker 1
Lenke til kommentar

...men det får bli etter at jeg har anskaffet hus med plass til en liten arbeidsplass

Vi som faktisk har vært der kan skrive under på at man ikke trenger stor plass til dette... :)

 

alternativet blir stua eller soverommet... :ph34r: ikke noe særlig høy WAF :thumbdown:

driver å ser på et hus som kanskje kan være aktuelt... hele kjelleren til arbeidsrom for alle "elektroduppeditter" (som fruen sier) :D

Lenke til kommentar

Du har ikke lyst til å fortelle hva slags kjemikalier du bruker når lager PCB-kort, samt hvor lenge du utsetter kortene for UV-stråling?

Kortet blir belyst i 5 minutter(bungard positiv resist), har prøvd noe no-name fra ebay også, ble tre minutter der.

 

For framkalling bruker jeg NaOH(kaustist soda), 1g per dl vann. Det går ca 30 sekunder før overflødig resist er borte.

 

Etsingen skjer ved hjelp av FeCL3(jernklorid), oppvarmet til ca. 40-50C. Jeg har blandet inn litt HCL(Saltsyre) for å forlenge bruken av oppløsningen.

 

-

Kolbjørn

 

Flott. Du har ikke tilfeldigvis prøvd natriumpersulfat i stedet for jernklorid? Leste ett eller annet sted at jernklorid var grisete greier(?) :p

Endret av BigJackW
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...