Vis indlæg

Denne sektion tillader dig at se alle indlæg oprettet af dette medlem. Bemærk at du kun kan se indlæg der er oprettet i områder du i øjeblikket har adgang til.


Emner - pacman

Sider: [1]
1
Generel Elektronik / Program til hobby-brug
« Dato: November 14, 2011, 05:30:02 »
Jeg er lige kommet forbi et lille program, som kan lave en slags elektronik hobby-layout.
Først nogle ulemper:
 * lidt langsomt/tungt.
 * laver ikke gerber-filer.

Selvom programmet ikke er til professionelt brug, synes jeg det bør nævnes, fordi det har nogle små kvaliteter hist og her.
Blandt andet bruger det SVG til komponenter og boards, og det har da også en mulighed for at skifte mellem 3 visninger:
 * Breadboard
 * Diagram
 * PCB-layout
Det kører på Windows, Linux og Mac OS X...
http://fritzing.org

Det er muligt at lave et print, men det er nok lidt besværligt i forhold til professionelle programmer.
Men jeg tror at programmet er vældig godt til lige at lave en hurtig illustration af hvordan man kan sætte nogle komponenter op i et breadboard.
Hvis du har en PowerPC Mac, så download programmet til Mac OS X 10.4, da det andet er compilet til intel.

2
Køb og Salg / Reklame: Billig Varmluft loddestation
« Dato: Oktober 12, 2011, 07:49:19 »
Dette er ikke noget jeg sælger eller har selv; det er simpelthen en dims jeg lige snublede over, og tænkte at der var andre herinde, som måske også synes den kunne være interessant.

Prøv at se denne W.E.P. varmluft loddestation. Prisen er lav, jeg vil tro at det er et godt køb, blandt andet fordi jeg ved at Hallenslev Radio/TV selv benytter den slags værktøj de sælger..

(De har også en rigtig god tinsugetråd der hedder B.M.J. -det er den bedste sugetråd jeg har prøvet, så hvis du mangler sugetråd, anbefaler jeg at købe den dér; jeg plejer at købe 10 ruller ad gangen til omkring 12-15 kr/stk).

3
Andet digital relateret / Modstands DAC
« Dato: Oktober 08, 2011, 02:19:41 »
Da jeg fornylig har kigget på følgende opgave, og andre har været interesseret i dette, lægger jeg mine resultater ud her på siden, så alle kan få glæde af det.

Her er et kredsløb der konverterer 4 kontakter/taster til analog signaler, så du med en microcontroller kan måle hvilke taster der er trykket ned.
Tasterne kan kombineres, så du kan fx. holde 3 taster nede samtidig, og så kan microcontrolleren alligevel aflæse den korrekte værdi.

Hvis vi kalder SW1 for D, SW2 for C, SW3 for B og SW4 for A, fik jeg følgende måleresultater med en 3k9 modstand (5%)
Det anbefales at bruge en 4k02 modstand i stedet for en 3k9 modstand.
Men endnu mere vigtigt er det at alle modstande er 1% modstande (eller bedre), for er de for unøjagtige, vil dine resultater kunne blive for skæve til at kunne bruges.


(ingen) 5V
A       257x
B       1721
AB      1296
C       1039
AC      867
BC      743
ABC     651
D       580
AD      522
BD      474
ABD     435
CD      402
ACD     373
BCD     348
ABCD    326


Hvis microcontrolleren nu kan måle 5V (hvilket jeg faktisk går ud fra i dette eksempel), så vil værdierne være cirka følgende for en 10-bit ADC:

1024 / 5000 mV * 2575 mV = 527
1024 / 5000 mV * 1721 mV = 352
1024 / 5000 mV* 1296 mV  = 265
1024 / 5000 mV * 1039 mV = 212
1024 / 5000 mV * 867 mV = 177
1024 / 5000 mV * 743 mV = 152
1024 / 5000 mV * 651 mV = 133
1024 / 5000 mV * 580 mV = 118
1024 / 5000 mV* 522 mV  = 106
1024 / 5000 mV* 474 mV  = 97
1024 / 5000 mV* 435 mV  = 89
1024 / 5000 mV* 402 mV  = 82
1024 / 5000 mV* 373 mV  = 76
1024 / 5000 mV* 348 mV  = 71
1024 / 5000 mV* 326 mV  = 66


Du kan med følgende kode checke hvilket område den målte værdi hører til:
Kode:
if(value >= 0 && value < ((66 + 71) / 2))
{
  /* value is 66 */
}
else if(value >= ((66 + 71) / 2) && value < ((71 + 76) / 2))
{
  /* value is 71 */
}
else if(value >= ((71 + 76) / 2) && value < ((76 + 82) / 2))
{
  /* value is 76 */
}
else if (...)
{
  /* value is ... */
}
else if(value >= ((265 + 352) / 2) && value < ((352 + 527) / 2))
{
  /* value is 352 */
}
else if(value >= ((352 + 527) / 2) && value < ((527 + 1024) / 2))
{
  /* value is 527 */
}
else if(value >= ((527 + 1024) / 2))
{
  /* value is 1023; no button pressed */
}

Jeg anbefaler at man ikke bruger mere end 4 switches. Du kan selvfølgelig selv vælge om du vil bruge push-buttons eller dip-switches.
Yderligere vil jeg understrege at det vil være en rigtig god idé at stabilisere sin ADC ved at tage gennemsnittet af minimum 4 målinger, for en ADC står ofte og flimrer med de to nederste bits.
Det er muligt at du kan sætte 5 switches på, og stadig få stabile resultater; dette har jeg ikke afprøvet, men jeg mener at resultaterne begynder at ligge temmelig tæt efter de første 4 switches.

4
Off Topic / Hvor mange Mac-folk er vi?
« Dato: Oktober 02, 2011, 10:04:23 »
Da jeg selv udelukkende bruger Mac (PowerMac/PowerBook), og laver programmerings-værktøjer til denne, kunne det være sjovt at vide om der er andre Mac-folk herinde.
Har du PowerMac er jeg også vældig interesseret i at du understreger at det er en ikke-intel Mac.

5
Andet analog relateret / Opgave: Konvertér et analog-signal
« Dato: September 21, 2011, 05:32:38 »
Her er en sjov lærerig opgave...

Du har en dims der giver dig et analogt signal mellem 0V og 5.0V.
Du har også en chip med ADC, som skal aflæse dette signal.
Chippen kører på 3.3V og kan ikke tåle 5V
Du skal på den billigst mulige måde konvertere det analoge signal til et signal der ligger mellem 0V og maks 3.3V.
Signalet må ikke overstige 3.3V. Du kan godt sætte max-værdien til fx. 3.2V, hvis du vil det; bare max-værdien er over 3.0V for at lave den mest nøjagtige udlæsning på ADC'en.

Hvad gør du?

(Du må gerne sige at du har fundet løsningen, men ikke hvad du har gjort, før 28 sept; for så har andre en mulighed for også at løse opgaven på egen hånd)

6
Strømforsyninger - Omformer - Inverter / Tip: 5V forsyning på 5A
« Dato: September 20, 2011, 01:07:49 »
Har du sat for mange lysdioder til din 7805 som kun kan klare 1A ?

Ja, det var jo ikke så godt. Du kan evt. sætte flere 7805 på, og så dele dine lysdioder op i flere sektioner, men det er ikke altid så praktisk.

Nogle kender måske til 78S05 (og 78S12, 78S15, mm), som du kan trække 2A på, dem har jeg selv brugt nogle stykker af.
Der findes også nogle 7805'ere der kan gå op på 2.2A, 2.4A og 3A; dem kan du selvfølgelig bruge.

Men hvad hvis man er nødt til at trække mere end 2-3A på din forsyning - hvad gør man så ?
Flere steder har jeg set komplicerede strømforsyninger, som bruger én LM317 og nogle transistorer til at levere den ekstra strøm.

Men her for kort tid siden, kom jeg forbi KA78T05TU hos RS.

Den er kompatibel med de andre, dog kan den levere varen, og prisen er nogenlunde til at overkomme, hvis man bare skal bruge en enkelt. ;)

Men legen stopper ikke dér. For når du er nået op på over de 2A, så futter du din diodebro garanteret af, for mange går kun til 1A eller 1.5A. En 1N4007 tillader desværre også kun 1A.
Der er heldigvis en hel del at vælge mellem, men de ligner ikke de små runde, som du nok plejer at bruge.
Her er en liste, der er sorteret efter pris.

-Husk nu at din transformator og dens sikring også skal kunne trække det. ;)

7
Off Topic / Computer futtet af
« Dato: September 07, 2011, 12:16:36 »
Ja, her i den nærmeste fremtid kan det godt være jeg bliver lidt mindre aktiv, for min arbejdscomputer er lige krudtet af.
Strømforsyningen er gået sig en tur; det hjalp ikke at skifte sikringen.
Desværre er det en speciel LiteOn TESLA-Converter strømforsyning med specielle stik og speciel form, så der er ikke noget med bare at skifte ud. :(

8
Til PC og Windows findes der utallige programmer til at tegne diagrammer og print-layout i.

Men til Mac (PPC), Amiga, Atari og andre 'mindre-tals-systemer' kan det være svært at finde noget der kan bruges.

På Mac har jeg fundet noget der hedder jSchem, hvilket virker rimelig fornuftigt, er meget simpelt og nemt at bruge. Det er skrevet i Java (og jeg hader Java, men i dette tilfælde gør jeg altså en undtagelse - programmet er faktisk brugbart).

Som PCB-layout program, bruger jeg Osmond PCB, det kan lave gerber-filer, og er ganske behageligt at bruge (vel at mærke, efter man har læst dokumentationen - hvis du ikke læser dokumentationen, må du opgive at lave et print ganske hurtigt, da man ikke bare kan gætte sig til, hvordan de grundlæggende funktioner fungerer). Osmond PCB virker fint uden man registrerer det, men jeg blev så glad for programmet, at jeg betalte de $80, det kostede, og nu kan jeg sidde og nyde et bruger-interface der er acceptabelt på en Mac. ;)

I dag kom jeg så forbi denne side, hvor man kan tegne sine diagrammer on-line i sin web-browser. Det ser ud til at virke med Mac; og måske er der også andre platforme, der kan få glæde af det. Dette er egentlig grunden til at jeg skriver dette indlæg. Prøv det lige igennem, for at se om du mener det er brugbart. Gratis er det ihvertfald, og det burde også kunne lade sig gøre at lave små diagrammer til brug her på siden.

På Atari ST findes det udemærkede Platine ST. Ældre Mac (System 4) havde et tilsvarende program, som jeg kun prøvede kortvarigt, men husker at det var lækkert at bruge.

På Amiga har jeg desværre ikke prøvet nogle programmer, men en hurtig Google-søgning giver AmigaPCB.

9
Programmering / Introduktion til C
« Dato: August 17, 2011, 16:45:37 »
Ethvert C-program starter med funktionen 'main'. På en microcontroller som AVR, vil det typisk se sådan ud for et 'tomt' program, der gør 'ingenting':

Kode:
int main()
{
    /* call program-initialization from here */

    while(1)    /* do this forever */
    {
        /* this is your main-loop; you might want to put some code here */
    }
    return(0);  /* (never reached) */
}

første ting du ser, er 'int'. Dette er en variabel-type. Vi har en funktion vi kalder 'main', denne vil returnere en værdi. Derfor er vi nødt til at fortælle hvilken type værdi den skal returnere.
En int er lidt et vidt begreb. På en microcontroller som AVR vil den nok typisk være 16 bit bred (2 bytes).
Inde i vores funktion har vi et til keyword (nøgleord), der hedder 'while'.
While er en C-kommando og tager et enkelt udtryk. Så længe dette udtryk er sandt, vil de efterfølgende kommandoer (dem der således er inde i næste krølle-parantes blok) blive udført.
Sidst ses keyword'et 'return'. Dette er også en C-kommando. 'return' tager også et enkelt udtryk som argument, og dette udtryk bliver returneret (givet til) den kode som har kaldt rutinen (i dette tilfælde 'main').

Vi kan prøve at gøre en smule mere...
Kode:
#include <avr/io.h>
#include <util/delay.h>

void initLED()
{
    DDRA = 0xff;    /* set all pins to become output pins */
    PORTA = 0x00;   /* turn off all pins (eg. set all pins low) */
}

int main()
{
    initLED();

    while(1)    /* do this forever */
    {
        PORTA ^= (1 << PA0);
        _delay_ms(250);
        _delay_ms(250);
    }
    return(0);  /* (never reached) */
}

Vi har nu en hel masse mere.
#include indlæser en 'header-fil', dvs. en fil, der indeholder definitioner og forskellige værdier, program-stumper, funktions-prototyper, mm.
Det er ganske rart at man har include-kommandoen. Dette er ikke direkte en C-kommando, men det er noget pre-processoren håndterer. En C-compiler består nemlig af flere dele. En pre-processor køres først, og gør et stykke arbejde på din sourcekode, og denne kode som pre-processoren så har lavet, videregives til den rigtige C-compiler. Når C-compileren har lavet sin binære fil (en 'objekt-fil'), skal linkeren overtage. Linkeren kan klistre flere binære filer sammen. Dette er praktisk, for så kan man have en masse klargjorte binære filer, så man ikke skal compile en hel masse hver eneste gang.

#include kan bruges på to forskellige slags filer.
1: #include <systemheader.h>
2: #include "userheader.h"

En 'system-header' er en headerfil, som er 'installeret' sammen med din compiler.
En 'userheader' er en headerfil, som du selv har lavet, og den ligger sammen med din source-kode (i samme directory/mappe).

OK, næste ting, er at vi definerer vores egen rutine, den kalder vi 'initLED'.
Da den ikke returnerer nogen værdi, skriver vi keywordet 'void' foran. Void betyder stort set 'ingenting', man kan også sige 'smid væk'.
I vores initLED rutine sætter vi først DDRA til at have alle bits sat. DDRA er defineret i den include-fil der hedder <avr/io.h>.
DDRA er en forkortelse, og står for 'Data Direction Register A'.
PORTA er din microcontroller's første port (hvis den altså er implementeret; for enkelte microcontrollere har ingen PORTA, men måske en PORTB eller PORTC).
PORTA bruges på 2 måder...
Hvis du har sat et port-ben til at være input, kan du sætte bitten i PORTA til 1, for at koble pull-up modstanden til. Sættes bitten til 0, kobles pull-up modstanden fra.
Hvis du har sat portbenet til at være output, og sætter portbenets bit til 1, vil dette portben sende fx. 5V ud, hvis din forsyning til microcontrolleren er 5V.
Er portbenets bit sat til 0, vil portbenet's output være 0V (GND).

Nu kommer vi ned til main...
der kalder vi rutinen 'initLED'. Da denne rutine ingen parametre (argumenter) tager, lader vi parantesen med argumenter være tom.
    initLED();
-Linien skal afsluttes med semikolon. Dette er C's måde at opdele kommandoer/instruktioner.
Du kan således godt have flere kommandoer på samme linie, når de bare opdeles med semikolon.
Mellemrum, tabuleringer, Return og Linefeed karakterer behandles helt ens; dvs. alle behandles på samme måde som mellemrum.

Hvis nu initLED havde returneret en værdi, kunne vi have skrevet...

  int8_t myvar;

  myvar = initLED();
...så kunne vi lave udregninger på denne værdi som initLED returnerede. Men da vi har valgt at initLED ikke skal returnere en værdi, kan vi kun kalde rutinen på den måde, som koden ovenover viser.

Inde i while-løkken har vi følgende linie:

PORTA ^= (1 << PA0);

Den kan også skrives således:

PORTA = PORTA ^ (1 << PA0);

Dette kræver lidt forklaring...
Vi sætter PORTA lig med den gamle værdi af PORTA XOR (1 bitskiftet til venstre PA0 gange).
^ (hat) betyder XOR, eller Exclusive OR.
XOR ligner PLUS lidt i funktion, men XOR er en direkte binær funktion.
Et binært tal består af 0'er og 1'er, fx.
%11001001

XOR'er man 2 binære tal sammen, er resultatet af de bits der er 1 i begge tal = 0.
Er den ene bit 1 og den anden bit 0, bliver resultatet = 1.
Eks:
Kode:
    %1100
XOR %1001
    -----
    %0101

OK, nu er vi ovre XOR-delen. Vi har stadig bitskiftning.
PA0 er egentlig et konstant tal, som er defineret i avr/io.h
-Værdien for PA0 er sådan set 0, så vores linie vil se sådan ud inde bag ved:

PORTA = PORTA ^ (1 << 0);
Dette bliver regnet ud af compileren og forkortet til:
PORTA = PORTA ^ 1;

-Så alt i alt, hvad der sker, er at den laveste bit i PORTA, dvs. bitten for PA0, bliver ændret fra 0 til 1, hvis den i forvejen er 0, eller fra 1 til 0, hvis den i forvejen er 1.

Næste 2 linier ser således ud:
_delay_ms(250);

_delay_ms er en funktion der er defineret i filen util/delay.h
Den har brug for at man har defineret F_CPU til den clock-frekvens som microcontrolleren kører. Ofte vil denne clock-frekvens være 8MHz, hvis man kører med den interne oscillator. (Personligt kører jeg næsten altid med 20MHz). Indstillingen af F_CPU foregår i den fil, der hedder Makefile (hvis du bruger WinAVR eller anden  compiler-distribution med gcc).

10
Programmering / AVR
« Dato: August 17, 2011, 15:29:06 »
Har I spørgsmål omkring AVR programmering, hvadenten det er i C eller assembler, vil jeg gerne prøve at give kvalificerede svar.

11
Køb og Salg / Toner Transfer Ark i A5 størrelse
« Dato: August 13, 2011, 03:33:18 »
Jeg har hjemtaget nogle toner-transfer ark i A5 størrelse og afprøvet dem.
Tidligere har jeg prøvet at bruge 'underlaget' fra etiketter.
Etiket-underlaget fungerede faktisk ikke. Laser-printeren kunne ikke skrive særlig præcist på dem.
Det lykkedes at få et næsten fejlfrit print (jeg har lavet det dobbeltsidet, men dette er lidt svært, enkeltsidet er næsten lige ud ad landevejen).
Det, der skal bruges ud over en laser-printer, er et gammeldags strygejern fra genbrugs-butikken.
Altså et strygejern uden damp-funktion. Du skal bare indstille det på højeste temperatur ("linned").
Laminator har jeg også prøvet, men resultatet blev ikke godt, sikkert fordi jeg ikke har den rigtige laminator.
A5 transfer-arkene kan bruges i de fleste laserprintere; der er dog lidt bøvl med nogle Brother laser-printere.
Kan din laser-printer indstilles til at bruge A5 ark, så er det muligt at du kan bruge disse ark.

Update: Jeg har nu prøvet at ætse print og har fået et ganske nydeligt resultat. Det er lettest at lave enkeltsidede print, men dobbeltsidede kan lade sig gøre, hvis man går stille og roligt og præcist frem.

Arkene sælges for 5,00 kr. stykket ex. moms (4,00 kr. ved 10 stk). A4 ark kan også bestilles til 8,50 kr (7,00 kr. ved 10 stk). stykket ex. moms. Forsendelse vil være 12 kr. ved 20 stk eller under.

Kontakt mig, hvis du er interesseret. Du får selvfølgelig faktura, så du kan trække købet fra, hvis du har firma.

12
Print & Mekanik / Hvordan man kan spare en del penge på print...
« Dato: Juli 26, 2011, 18:55:32 »
Ja, jeg sidder for tiden og laver et print-layout.
For at det ikke skal være løgn, så er det mit første print, men jeg kender til en del af de fejl man kan begå.

Nu bruger jeg Mac, så der er sådan set ikke ret mange programmer at vælge imellem. Eagle er skrottet, jeg kan simpelthen ikke holde ud at stå på hænder og samtidig lave print-udlægning.

Derfor har jeg valgt Osmond PCB, og selvom det ikke er nødvendigt at betale for en funktionsdygtig udgave, har jeg valgt at give de $80 det koster for at støtte manden.

Nå, til sagen. Jeg har besluttet mig for at selv lave alle footprints.
Hvis man bare laver sine footprints, uden at checke dem efter, så vil man før eller siden lave en kæmpe brøler.

Nu, da jeg har lavet mit første print nogenlunde færdigt (ja, bortset fra at jeg vil lave det helt om, pga. ekstra funktionalitet), printede jeg det ud, og afprøvede alle komponent-typer.
Jeg har på denne lille 'øvelse' nok sparet mellem 300 og 600 kr, alt efter hvor mange forsøg der skal til for at lave rettelser. ;)

-Derfor; inden du sender dine filer til print-fabrikanten: print lige ud på en A4, både for- og bagside. Det kan godt være at det er forurening, men ét stykke papir til udsmidning er mindre forurening end 1 stykke print... ;)
Når du så har printet ud, så læg dine komponenter ovenpå papiret, og se om hulstørrelser passer, og om der er plads til nabo-komponenter, og ikk mindst: check at skruehoveder ikke rager ind over komponenter / printbaner.

Det er også en god idé, ikke at krydse stærkstrømsbaner, fx. Nul og Fase; heller ikke på bagsiden af printet. Det burde kunne lade sig gøre i de fleste tilfælde, at route på en måde, så banerne ikke krydser hinanden.

Brug programmet's check-funktioner. Det vil advare om de mest kendte fejl.

Når du så endelig (efter 3-4 ugers arbejde og gennemsyn) er klar til at sende dine filer til print-fabrikanten, så brug lige et par dage på at checke dit print-udlæg igen (er jeg ikke irriterende?).

Ok, ok.. jackaltac ser ud til at være stedet man får lavet print til billigst mulig pris.
Du får:
 1: Print der er i overensstemmelse med RoHS direktivet!
 2: Silketryk på oversiden
 3: Dobbeltsidet print (du kan også lave enkeltsidede print, men det koster det samme)
 4: Loddemaske på begge sider
 5: Printplader fra 50mm x 50mm op til 350mm x 350mm.
 6: Max. 5 print pr ordre!!
 7: Rabat hvis du bestiller flere samtidige print.

Se og afprøv mulighederne på deres side. -Husk også at se deres videoer! ;)

Priserne er i euro, men da de bor i Irland, skal du ikke regne fortoldning oveni; det er fortoldet.
Det eneste du skal gøre er at gange prisen med 1.25, hvis du ikke har firma.

Tip: Du kan lave flere ens print på samme plade, hvis du selv kan klippe dem ud. -Brug fx. en Dahle skæremaskine (en skæremaskine, der er lavet af metal; ikke plastic!)

13
Forum Feedback / Registrering og baggrundsbillede
« Dato: Marts 19, 2011, 23:30:28 »
Da jeg skulle registrere mig, kunne jeg ikke læse hvad der stod på billedet.
Efter 3 forsøg var jeg lige ved at give op.
Hvis muligt, vil jeg foreslå en lidt mere læsbar 'obfuscator'.

Derudover synes jeg at baggrunds-billedet her på siden er alt for dominerende og tror at det vil være passende, hvis det bliver gjort 75% lysere (i forhold til hvad det er lige i øjeblikket).

Ellers er jeg godt tilfreds og håber der kommer mange flere brugere til! :)

14
Dit Projekt / AVR Boulder Dash
« Dato: Marts 16, 2011, 06:46:54 »
Her er lidt for dem som havde computer i 80'erne...

http://avr.bruger.mine.nu/secret.html/

Der kræves ikke ret mange komponenter; de fleste komponenter kan du finde i dit modstands-sortiment...

Selvom jeg har skrevet al koden selv, kan jeg ikke give kildeteksten til andre; dette skyldes copyright-besværligheder. Men det er tilladt at lave en 'dims' til eget brug.

Sider: [1]