Gå til innhold

Diverse elektronikkprosjekter på gang


Anbefalte innlegg

Videoannonse
Annonse

Da er den nye uv-timeren min ferdig:

uvtimergammelny.jpg

 

Forbedringer ifra den gamle:

 

-Nøyaktighet: Den gamle var horribel på dette. Den nye har en +-20ppm krystall slik at maksimum feil per time er ca 0.072 sekunder(uten å ta høyde for temperatur som er maks +-30ppm), eller ~ 48 sekunder per uke, en klar forbedring fra den gamle som gjerne kunne være 48 sekunder feil per time. Det går an å måle seg til litt mere nøyaktighet, men i dette tilfellet ser jeg ikke verdien av det.

 

-To kanaler: Denne har to utganger for diode-brett, noe som gjør at den vil kunne brukes når jeg engang skal etse dobbelsidekort.

 

-Buzzer: Den sier ifra når tiden er ute.

 

 

Hvis jeg blir å lage en ny utgave av denne er det iallefall en ting jeg ville forandret på: avstanden fra kondensatorene til ic-soklene, ble litt for trangt slik at kondensatorene blir stående litt i vinkel. Utenom det er jeg egentlig veldig fornøyd, ble litt mange lasker, hele 8 stk, men tror det skal være vanskelig å bruke færre.

 

-

Kolbjørn

Lenke til kommentar

Julaften kom tidlig i år:

yayayay.jpg

 

yayayay2.jpg

 

Skal bli godt med litt kraftigere utstyr :)

Av det lille jeg har forsket hittil ser det veldig bra ut, er litt overrasket over størrelsen på dragon, den er jo knøtt liten :D

 

STK500-en er kun seriell tilkoblet, første gang på mange år at jeg har hatt bruk for en seriellport, dragon er litt mere moderne med usb tilkobling.

 

 

Det har blitt mye digital-elektronikk i det siste, så jeg satte opp en liten Cmoy forsterker igår, det er egentlig ett textbook eksempel på en negativ-feedback koblet opamp. Den fungerte fint, jeg har dog litt lav driftspenning(9v), så den klarte ikke de høyeste volumene. Den ble litt bedre når jeg koblet meg inn foran spenningsregulatoren, da fikk den ca 15v, fortsatt litt lite, men mye bedre enn 9.

Jeg har to typer opamper der ingen av de kan klassifiseres som "hifi" :p KA4558 strøk glatt på 9v, der var det mer eller mindre klasse B, jo mindre volum, jo mere av lyden ble kuttet bort. TL072 fungerte mye bedre, noe stygg høyfrekvent lyd(ca 13-14KHz), men utenom det så var det ok. Må nesten bygge meg en +- strømforsyning engang, hadde blitt så mye bedre enn spenningsdeling med motstander.

 

cmoy.jpg

 

-

Kolbjørn

Lenke til kommentar

Hva betalte du for dette kortet?

Betalte 756,78 for STK500-en og 322,32 for Dragon. Dette er selvfølgelig priser uten moms, så det kommer i tillegg. Fri frakt fra mouser på bestillinger over 700 norske.

 

Du får vel dyttet to 9v-batterier på op-ampen, gjør du ikke? Da har du jo litt mer å gå på.

Butbutbut, where's the fun in that? :p

 

-

Kolbjørn

Lenke til kommentar

Ettersom jeg etterhvert har opparbeidet meg et relativt stort lass med diverse deler, har jeg gått til innkjøp av ziplock-poser og labels:

labels.jpg

 

Nå blir det forhåpentligvis lettere å finne fram i dele-jungelen min :)

 

-

Kolbjørn

 

EDIT: Lablene er selvfølgelig laser-kompatible.

Endret av CoolBeer
Lenke til kommentar

Holder for øyeblikket på med å lære meg litt med stk500-en og dragon:

stk500dragontest.jpg

 

Har satt opp en liten test med ett 10segment bardisplay som jeg vurderer å bruke til viftekontrolleren, tenk 4 slike bak ett halvgjennomsiktig plexiglasspanel.

Litt morro å debugge kretsen "live" via "debug-Wire"-interfacen til microen.

 

Enkel kode:

 

 

#include <avr/io.h>

#define SPI_PORT PORTB
#define SPI_DDR DDRB
#define SPI_SERIAL PB0
#define SPI_SCK PB1
#define SPI_RCK PB2

void pushByte(const uint8_t byteToPush)
{
for(uint8_t teller = 0; teller != 8; ++teller)
{
	if(byteToPush & (1 << teller))
		SPI_PORT |= (1 << SPI_SERIAL);
	else
		SPI_PORT &= ~(1 << SPI_SERIAL);
	SPI_PORT |= (1 << SPI_SCK);
	SPI_PORT &= ~(1 << SPI_SCK);
}
SPI_PORT |= (1 << SPI_RCK);
SPI_PORT &= ~(1 << SPI_RCK);
}

int main(void)
{
SPI_DDR |= (1 << SPI_SERIAL) | (1 << SPI_SCK) | (1 << SPI_RCK);
SPI_PORT &= ~(1 << SPI_SERIAL) & ~(1 << SPI_SCK) & ~(1 << SPI_RCK);
pushByte(0xF0);
while(1)
{
	asm volatile ( "nop" );
}
}

 

 

-

Kolbjørn

Lenke til kommentar

Da har jeg fundert litt nærmere på hvordan jeg vil angripe 4kanals viftekontrolleren.

Den blir mest sansynlig basert på en ATtiny2313, en 20pins AVR.

 

fancontrol2313.png

 

Her er ett bilde rappet ifra databladet, jeg har strøket ut de pinnene som foreløpig er i bruk:

PA0 PA1 : Ekstern krystall, mest sansynlig 20MHz
PB2 PB3 PB4 PD5 : PWM ut, må være på disse portene
PD0 PD1 PD2 : SPI til 74hc595-ene for barsegmentene
PD3 PD4 PD6 : Brytere, opp ned og valg
PA2 : Reset, 10k pullup motstand

Da står vi igjen med:
PB0 PB1 PB5 PB6 PB7

PB5, PB6 og PB7 brukes sammen med PA2(reset) til ISP(In System Programming), 
derfor er det greit - så langt det er mulig - å ikke bruke disse i kretsen, 
eksterne komponenter koblet på disse pinnene kan ødelegge for programmeringen.

 

Jeg har kommet så langt at jeg multiplexer to 10segment bardisplay, har fått opp og ned knappene til å virke med debouncing. Jeg har enda til gode å sette opp PWM, jeg må omsortere pinnebruken til den planlagte og koble opp den siste knappen(valg/select/enter el.).

 

Det har egentlig vært utrolig enkelt å få kretsen til å virke når man har mulighet til å steppe igjennom koden med en hardwaredebugger(dragon), nesten litt for enkelt, ingen skikkelige hodepiner enda. Så jeg må si meg veldig fornøyd med verktøyene hittils.

 

Hvis det er noe av dette som er uklart, eventuelt dårlig forklart, så er det bare å rope ut, så skal jeg prøve å forklare på en bedre måte.

 

-

Kolbjørn

Lenke til kommentar

Da har jeg fundert litt nærmere på hvordan jeg vil angripe 4kanals viftekontrolleren.

Den blir mest sansynlig basert på en ATtiny2313, en 20pins AVR.

 

fancontrol2313.png

 

Her er ett bilde rappet ifra databladet, jeg har strøket ut de pinnene som foreløpig er i bruk:

PA0 PA1 : Ekstern krystall, mest sansynlig 20MHz
PB2 PB3 PB4 PD5 : PWM ut, må være på disse portene
PD0 PD1 PD2 : SPI til 74hc595-ene for barsegmentene
PD3 PD4 PD6 : Brytere, opp ned og valg
PA2 : Reset, 10k pullup motstand

Da står vi igjen med:
PB0 PB1 PB5 PB6 PB7

PB5, PB6 og PB7 brukes sammen med PA2(reset) til ISP(In System Programming), 
derfor er det greit - så langt det er mulig - å ikke bruke disse i kretsen, 
eksterne komponenter koblet på disse pinnene kan ødelegge for programmeringen.

 

Jeg har kommet så langt at jeg multiplexer to 10segment bardisplay, har fått opp og ned knappene til å virke med debouncing. Jeg har enda til gode å sette opp PWM, jeg må omsortere pinnebruken til den planlagte og koble opp den siste knappen(valg/select/enter el.).

 

Det har egentlig vært utrolig enkelt å få kretsen til å virke når man har mulighet til å steppe igjennom koden med en hardwaredebugger(dragon), nesten litt for enkelt, ingen skikkelige hodepiner enda. Så jeg må si meg veldig fornøyd med verktøyene hittils.

 

Hvis det er noe av dette som er uklart, eventuelt dårlig forklart, så er det bare å rope ut, så skal jeg prøve å forklare på en bedre måte.

 

-

Kolbjørn

 

SPI på PD0 PD1 PD2? Er det ikke USART som er på disse pinnene? (eller har USARTen en SPI modus også kanskje?)

 

Jeg ville kanskje brukt PB5,6,7 til SPI. Da kan du bruke de andre til knapper eventuelt chip selects for SPI kretsene om du trenger det. I tillegg synes jeg det er kjekt å bruke TX til å sende debug info til en terminal på PCen (bruk RS232 chipen på STK 500).

 

10K pull-up på reset linja kan kanskje hindre deg i å bruke debug wire? (jeg hadde noe problemer, kanskje jeg hadde en cap i tillegg husker ikke). Har du testet dette?

 

Jeg brukte PWM på denne kretsen i farts-regulatoren min, se link i signaturen min fom du vil se koden. Ser ut til at den døde etter ca 5min da, så den må jeg fikse litt på. Trur jeg vet hva feilen er da (hardware issue, typen ta noen deler, sette sammen og se om det virker :p)

Lenke til kommentar

SPI på PD0 PD1 PD2? Er det ikke USART som er på disse pinnene? (eller har USARTen en SPI modus også kanskje?)

Jupp, er USART på PD0 og PD1. Har ikke planlagt en oppkobling mot pc, selv om det faktisk kunne vært litt morro, der fikk jeg noe å gruble på.

 

Jeg ville kanskje brukt PB5,6,7 til SPI. Da kan du bruke de andre til knapper eventuelt chip selects for SPI kretsene om du trenger det. I tillegg synes jeg det er kjekt å bruke TX til å sende debug info til en terminal på PCen (bruk RS232 chipen på STK 500).

Blir nok ikke mere enn 2 595-ere på SPI-bussen, så kommer meg unna chipselect. Har enda ikke prøvd meg på RS232 enda, akkurat oppdaget debugWire på dragon :D Men som sagt, hadde egentlig vært litt morro med en oppkobling til pcen for temperatur, viftehastighet og slikt.

 

10K pull-up på reset linja kan kanskje hindre deg i å bruke debug wire? (jeg hadde noe problemer, kanskje jeg hadde en cap i tillegg husker ikke). Har du testet dette?

Tiny24/44 headeren min har en 10k pullup og det fungerer greit, ikke hatt noen problemer enda. Har dog måttet ta bort jumperen på stk500-en for å programmere/debugge med dragon, det er dokumentert at stk500 har en noe kraftig pullup.

 

Jeg brukte PWM på denne kretsen i farts-regulatoren min, se link i signaturen min fom du vil se koden. Ser ut til at den døde etter ca 5min da, så den må jeg fikse litt på. Trur jeg vet hva feilen er da (hardware issue, typen ta noen deler, sette sammen og se om det virker :p)

Hmm, hadde du bypass diode over motoren? Kan være induktiv spenningshopp? Jeg har iallefall glemt dioder på den første viftekontrolleren, den ser nå ut til å fungere fortsatt :p

 

DebugWire er forresten genialt, har kommet meg forbi kneika jeg hadde på frekvensmeteret mitt, fikk veldig fort greie på hvor jeg hadde noe rar kode. Det er enda mye å gå på før ting er perfekt - for all del - men det er godt å ha noe framgang å vise til.

 

ATtiny13A er forresten en liten luring på stk500-en, må legge opp reset manuelt, ellers får man ikke kontakt via ISP. Dette fant jeg ut etter å ha HV programmert den en tre-fire ganger og saumfart dokumentasjonen for info.

 

Takker og bukker for tilbakemelding, setter pris på det.

-

Kolbjørn

 

EDIT: Ser på skjemaene dine at du har bypass diode, så der gikk den teorien min i vasken :p

Endret av CoolBeer
Lenke til kommentar

Vet ikke hvordan det er på PC vifter, mulig de har noen dioder innebygget. Men jeg trur nok det kan være lurt å ha dioder i parallell med motorene ja. Skal ikke store spenningshoppet til før ting går i stykker. På fartsregulatoren min er det jo snakk om flere ampere strøm, men de diodene jeg har satt på er jo ikke i nærheten av hva jeg skulle ha hatt der... Tok det jeg hadde som vanlig....

 

Hvis det er plass på kretskortet skader det i alle fall ikke å lage muligheten for å montere de og så kan en heller la være å montere om det viser seg at de ikke er nødvendige.

 

Har planer om å komme med en ny viftestyring i løpe av høsten jeg også om alt går etter planen. Vil bruke en AVR UC3 krets. Noe overkill å bruke en 32 bit kontroller, men de jeg har best kunnskap om og enklest tilgang på. Den viftekontrolleren jeg har i signaturen min var mitt første prosjekt, og ble vell aldri helt ferdig. Ble mest laget for å lære meg ting den gangen. Tipper jeg vil bestille kretskort til den, så kanskje jeg skal starte en tråd litt tidlig slik at folk komme med ideer og bidra litt...

Lenke til kommentar

Heisann, flott å høre at jeg inspirerer :)

 

Lekte meg litt med fuses på en tiny24 her i kveld, med det resultat at jeg måtte lodde opp hv_prog headeren på dragon-en(den er ikke koblet opp fra butikk) for å reparere det med high-voltage programming. High-voltage er i dette tilfellet 12V :D Etter ett par forsøk fikk jeg tilbake kontrollen over kontrolleren(gee, tok du han?), og alt var fryd og gammen. Fikk tilogmed prosjektet mitt opp å gå:

 

lcdfirst.jpg

 

Mitt første vellykkede LCD prosjekt!

Det er riktignok bare følgende kode:

 

 

#include <avr/io.h>

#include "main.h"
#include "lcd.h"
int main(void)
{
   DDRA |= (1 << PA0) | (1 << PA1) | (1 << PA2) | (1 << PA3);
   DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2);
   for(uint16_t teller = 0; teller != 50000; ++teller)
       asm volatile ( "nop" );
   InitLCD(LS_BLINK);
   LCDClear();
   LCDWriteString("Hello World!");
   while(1)                                                                 //Main loop
       asm volatile ( "nop" );
}

 

 

Jeg har også brukt ett API herifra grunnet at jeg ikke fikk til på egenhånd :roll:

Morro å komme over den kneika også!

 

-

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å
  • Hvem er aktive   0 medlemmer

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