Gå til innhold

Diverse elektronikkprosjekter på gang


Anbefalte innlegg

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.

 

48x84 er vell 4032 pixler, men tipper du bare var litt kjapp i vendinga her og egentlig mente at du brukte 504bytes til buffer? Det er fremdels veldig mye mer en hva en trenger, og dette kan lett deles på 6 (siden hver bokstav er 7x5pixler som blir 8*6pixler når en tar med hvitområdet rundt bokstavene.

 

Hadde tenkt å poste dette eksempelet tidligere i uka, men rakk ikke lage det før nå. Eksempelet må selvfølgelig endres til å skrive til SPI data registeret i stede for PORTB, men jeg gadd ikke koble opp det displayet jeg har liggende (har et slikt display jeg også...). Jeg skrev koden for ATtiny2313, den har bare 128 bytes SRAM og 2 Kbytes Flash. Dette eksempelet bruker 86 bytes av SRAM og 522 bytes av Flash (67,2% SRAM og 25,5% Flash).

 

 

 

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

static const uint8_t ascii[][5] PROGMEM=
{
  { 0x20, 0x54, 0x54, 0x54, 0x78 },  // a
  { 0x7F, 0x48, 0x44, 0x44, 0x38 },  // b
  { 0x38, 0x44, 0x44, 0x44, 0x20 },  // c
  { 0x38, 0x44, 0x44, 0x48, 0x7F },  // d
  { 0x38, 0x54, 0x54, 0x54, 0x18 },  // e
  { 0x08, 0x7E, 0x09, 0x01, 0x02 },  // f
  { 0x0C, 0x52, 0x52, 0x52, 0x3E },  // g
  { 0x7F, 0x08, 0x04, 0x04, 0x78 },  // h
  { 0x00, 0x44, 0x7D, 0x40, 0x00 },  // i
  { 0x20, 0x40, 0x44, 0x3D, 0x00 },  // j
  { 0x7F, 0x10, 0x28, 0x44, 0x00 },  // k
  { 0x00, 0x41, 0x7F, 0x40, 0x00 },  // l
  { 0x7C, 0x04, 0x18, 0x04, 0x78 },  // m
  { 0x7C, 0x08, 0x04, 0x04, 0x78 },  // n
  { 0x38, 0x44, 0x44, 0x44, 0x38 },  // o
  { 0x7C, 0x14, 0x14, 0x14, 0x08 },  // p
  { 0x08, 0x14, 0x14, 0x18, 0x7C },  // q
  { 0x7C, 0x08, 0x04, 0x04, 0x08 },  // r
  { 0x48, 0x54, 0x54, 0x54, 0x20 },  // s
  { 0x04, 0x3F, 0x44, 0x40, 0x20 },  // t
  { 0x3C, 0x40, 0x40, 0x20, 0x7C },  // u
  { 0x1C, 0x20, 0x40, 0x20, 0x1C },  // v
  { 0x3C, 0x40, 0x30, 0x40, 0x3C },  // w
  { 0x44, 0x28, 0x10, 0x28, 0x44 },  // x
  { 0x0C, 0x50, 0x50, 0x50, 0x3C },  // y
  { 0x44, 0x64, 0x54, 0x4C, 0x44 }   // z
};


void updatelcd(uint8_t* str){
uint8_t* ptr; //pointer to ascii table in flash
uint8_t foo;  //counter variable
while(*str++){
	ptr = &ascii;
	//"a" in my ascii table is at entry 0 (byte 0-4)
	//in regular ascii a is 97, so we must remap
	ptr += (((*str)-97)*5); //calculate correct start value of current char
	for(foo=0;foo<5;foo++){ //draw the 5 columns of current char
		PORTB = pgm_read_byte(ptr++);
	}
	PORTB = 0x00; // and draw one whitespace column between each char
}
return; 
}


int main(void)
{
//screen buffer 6 lines x 14 chars (each char is 8x6 pixels including white space between chars)
//buffer must be 1 byte longer as the last byte is the zero byte terminating the string
uint8_t screenbuffer[85] = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef";

updatelcd(&screenbuffer);

   while(1);;
}

 

 

Lenke til kommentar
Videoannonse
Annonse

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

Nope, har også hørt om Saltsyre og Hydrogenperoksid (HCL + H2O2). Joda, jernklorid er grisete greier, så det er greit å være litt forsiktig.

 

48x84 er vell 4032 pixler, men tipper du bare var litt kjapp i vendinga her og egentlig mente at du brukte 504bytes til buffer? Det er fremdels veldig mye mer en hva en trenger, og dette kan lett deles på 6 (siden hver bokstav er 7x5pixler som blir 8*6pixler når en tar med hvitområdet rundt bokstavene.

 

Hadde tenkt å poste dette eksempelet tidligere i uka, men rakk ikke lage det før nå. Eksempelet må selvfølgelig endres til å skrive til SPI data registeret i stede for PORTB, men jeg gadd ikke koble opp det displayet jeg har liggende (har et slikt display jeg også...). Jeg skrev koden for ATtiny2313, den har bare 128 bytes SRAM og 2 Kbytes Flash. Dette eksempelet bruker 86 bytes av SRAM og 522 bytes av Flash (67,2% SRAM og 25,5% Flash).

Doh, matte fail av meg det der :blush:

Flott med kodeeksempel!

 

In other news: Jeg har nå fått laget meg noen printkort hos www.seeedstudio.com for å sjekke kvaliteten. Prisen for 10 kort opp til 5x5cm er 9.90$ + frakt(totalt ca 14 dollar).

 

Dette er da en ATtiny2313 header med krystall, resetknapp, isp-header og bypass:

 

img4839u.jpg

 

img48382.jpg

 

 

For rundt 75kr er dette vanvittig billige kort, neste kort-test går til iteadstudio.com, de har samme type tilbud for ca samme pris.

 

-

Kolbjørn

Lenke til kommentar

Da har jeg brukt halve kvelden, og halve natta på å leke litt med elektronikk.

Jeg kjøpte meg nylig et par forskjellige avr-brikker, og har begynt å leke med disse. Jeg har savnet en effektiv måte å få disse til å snakke med pc-en på. Siden RS232 har plagsomme spenningsnivåer, valgte jeg å kikke i retning USB.

 

Jeg innser at en treig mikrokontroller kommer til å slite med å gjøre så mye mer enn å snakke med usb-kontrolleren, så jeg bestemmer meg for å ha en kontroller som "oversetter" mellom USB og seriell kommunikasjon, som en mikrokontroller lett kan forstå.

 

Med litt søking, fant jeg et prosjekt kalt AVR-CDC, som faktisk var en avr-brikke, som kunne oversette usb til rs232, med et litt mer behagelig spenningsnivå enn COM porten i pc-en. Dette prosjektet hadde ferdigkompilert kode til en attiny 2313, og siden jeg har en slik liggende, så blir det til at jeg bruker koden fra det prosjektet.

 

USB liker at datalinjene holder spenning på 3,3V-ish. Siden jeg for det meste kjører avr-brikkene på 5V, trenger jeg å skille USB-"kontrolleren" elektrisk fra AVR-brikken den kommuniserer med. Jeg utvidet dermed prosjektet med et par optokoblere. Jeg modifiserte også de originale tegningene litt, for at den skulle passe med komponenter jeg hadde liggende.

Jeg lagde følgende kretsskjema:

post-128736-0-02633000-1309914866_thumb.png

 

Litt prototyping og leking senere, så har jeg faktisk en fungerende prototyp, som så slik ut:

post-128736-0-12738600-1309914996_thumb.jpgpost-128736-0-30522000-1309915062_thumb.jpg

 

Jeg har designet PCB, så når jeg en gang får hjem etseutstyr, så skal den nok modifiseres videre, slik at den blir mer anvendelig og permanent.

 

Så til det store spørsmålet:

Microsoft har jo bestemt seg for at alle drivere skal være digitalt signerte. Dette gjør at jeg må styre med noe "Test Mode" i windows for å kunne bruke dette brettet.

Kjenner dere til lignende prosjekter, som baserer seg på allerede eksisterende drivere, som allerede er signert?

Lenke til kommentar
  • 4 uker senere...

Billige stepper-motorer på salg (containerfrakt fra jetcarrier + under momsgrensa = billig). Har kjøpt meg 3 stk selv til en 3-akset cnc maskin jeg driver å bygger litt på si.

 

Made by Applied Motion Products Inc, the HT23-425 stepper motor features: high torque, 2.5V, 3.7A/ø, 0.665 ohms, and 200 S/R.

 

Jeg tenkte drive disse med denne driveren, men dette punktet gjør at jeg blir usikker: "Driver output compatible with 2 or 4 phase, 4,6 or 8 lead stepper motors, 3A max."Kan jeg seriekoble motstander med motorene slik at de får mindre strøm, eller er dette noe som egentlig går bra i driverkretsen?

 

 

Lenke til kommentar

Billige stepper-motorer på salg (containerfrakt fra jetcarrier + under momsgrensa = billig). Har kjøpt meg 3 stk selv til en 3-akset cnc maskin jeg driver å bygger litt på si.

 

Made by Applied Motion Products Inc, the HT23-425 stepper motor features: high torque, 2.5V, 3.7A/ø, 0.665 ohms, and 200 S/R.

 

Jeg tenkte drive disse med denne driveren, men dette punktet gjør at jeg blir usikker: "Driver output compatible with 2 or 4 phase, 4,6 or 8 lead stepper motors, 3A max."Kan jeg seriekoble motstander med motorene slik at de får mindre strøm, eller er dette noe som egentlig går bra i driverkretsen?

Jeg ville ikke ha tatt sjansen på at driveren tåler overbelastning. På en annen side - dersom kjører motorene normalt så tenker jeg du ikke vil komme i situasjoner hvor strømmen blir så høy.

Ville uansett ha sett litt mere på hvordan driveren fungerer. Kontrollerer den strømmen til stepper motoren?

 

[edit]

Du kan ikke bruke kontrolleren på stepper-motoren. Fordi:

*Attention: This driver is the 1.5A-3A version, it's specially designed for stepper motors with rated current from 1.5A to 3A, it's NOT compatible with stepper motors with rated current below 1.5A or above 3A!

Snippet fra ebay.

Endret av geir__hk
Lenke til kommentar

Billige stepper-motorer på salg (containerfrakt fra jetcarrier + under momsgrensa = billig). Har kjøpt meg 3 stk selv til en 3-akset cnc maskin jeg driver å bygger litt på si.

 

Jøss, var jo ganske billige de der. Hvor mye kom det på totalt?

 

Edit:

Please be advised that we do not ship to your country due to R.O.H.S. laws. You order has been canceled and your credit card has not been charged.

 

Regards,

The Electronic Goldmine

 

:(

Endret av BigJackW
Lenke til kommentar

Billige stepper-motorer på salg (containerfrakt fra jetcarrier + under momsgrensa = billig). Har kjøpt meg 3 stk selv til en 3-akset cnc maskin jeg driver å bygger litt på si.

 

Jøss, var jo ganske billige de der. Hvor mye kom det på totalt?

 

Edit:

Please be advised that we do not ship to your country due to R.O.H.S. laws. You order has been canceled and your credit card has not been charged.

 

Regards,

The Electronic Goldmine

 

:(

 

3 stk kom på 195 totalt :) Frakt på 70 kr innenlands usa, jetcarrier frakter over atlanteren - da tror jeg ikke ROHS spiller sånn inn :)

 

 

 

Lenke til kommentar
  • 3 uker senere...
  • 1 måned senere...

Hentet meg en loddestasjon(Hakko FX-888) fra Aliexpress.com tidligere i år, var eneste plassen jeg fant 220v versionen, så langt jeg kan se er den ekte også(alltid en bonus :p).

Fake, i likhet med alt som kalles Hakko fra Kina. Haugevis av Hakko-kloner der og på E-bay. Fikk min fra RS Components nå, her snakker vi kvalitet på både stasjon og innpakning.

Lenke til kommentar
  • 2 uker senere...

Da var man sånn halvveis igang igjen. Har vært igjennom en flytteprosess og en periode uten nett, så har blitt lite tid til elektronikk.

 

Har en fungerende prototyp av en enkel klokke koblet opp:

 

img6295w.jpg

 

 

 

Klokkepulsen er generert fra en 32768Hz krystall koblet opp som en pierce oscillator(med en 4049 Hex Inverter).

ATMega48P har riktignok mulighet for å drive klokkekrystallen men er da veldig følsom for variasjoner i spenning, ved ett tilfelle hadde jeg klokken gående i dobbel hastighet.

Bruker for øyeblikket en batteripakke med 4x1.2v AA batterier, men planen etterhvert er litt mer permanent strømforsyning. Tenker også på muligheten for DIGRE 7-segment og veggmontering, mulighetene er mange.

 

 

 

En liten sneak-peak på ett annet prosjekt jeg holder på med er:

 

img6297s.jpg

 

 

For øyeblikket er det bare to H-broer som driver en steppermotor der broene drives av en mikro-kontroller.

 

-

Kolbjørn

Lenke til kommentar

Pfft!! Du bare bestiller 28 (eller 42) slike så er du i gang!

Hehe, alltid en mulighet hvis du vil ha muligheten for å sjekke klokka ifra ett fly.

 

 

Driver å tuller litt med en liten krets jeg så i ett elektronikkblad(Silicon Chip eller Elektor):

 

usbpowerinjector.png

 

 

Kretsen bytter ut +5v spenningen fra pc-en og erstatter den med sin egen, det gjør at en USB-enhet har mulighet til å trekke mer strøm enn USB-porten kan levere.

Mitt bruksområde blir nok sammen med AVR Dragon, da den er noe sensitiv med tanke på spenningsnivåer og strømtrekk.

Spenningen ut blir slått av automatisk om maskinen slås av eller kabelen til maskinen kobles fra, vurderer dog en bryter for å bypasse den funksjonen om ønskelig.

 

-

Kolbjørn

Lenke til kommentar

hei

jeg er helt grønn når det gjelder elektronik, men jeg lurer på om noen kan svare meg på følgende. Jeg har fått meg ny hobby, modelljernbane. der ønsker jeg å ha det som kalles animasjoner.

det vil si at ting beveger seg. Da trenger jeg motorer. Jeg jobber i radio/tv bangsjen, og ha dermed ubegrenset tilgang til 4 fases dc step motorer(gammle skrivere og scannere) Og det er da jeg begynner å klø meg i hode. en vanlig liten dc motor, trenger du 2 ledere, så ruller den i vei. men på en 4 fases dc step motor er det flere kabler inn. spørsmålet er, kan jeg koble en slik motor direkte på et powersupply, eller må det være en eller annen form for styrings kontroll.

håper noen kan hjelpe meg

på forhånd takk

mvh

Morten

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...