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.


Beskeder - kjoller

Sider: [1] 2 3
1
Print & Mekanik / Sv: Printproduktion direkte fra Altium Designer
« Dato: August 03, 2015, 14:32:30 »
Fedt! Det er altid rart at få et nyt print ind ad døren  :)

Det kan være at du kan hjælpe mig:
Hvordan virker det med DHL og betaling af moms? Er der et gebyr på i størrelsesordenen af PostDanmark (25% + 160,-)? Er det mere? Mindre? Hvordan kommer regningen for det?

2
Print & Mekanik / Sv: Printproduktion direkte fra Altium Designer
« Dato: Juli 14, 2015, 13:39:59 »
Kina er et godt og billigt sted at få lavet sine print, men det er et godt økonomisk valg at prøve at holde sig inden for grænserne. (som er 5x5cm, 10x5cm, 10x10cm, 5x15cm osv.)

Fx. er der fedt at lave et 10x5cm board i stedet for 9x6 cm (som ville udløse en 10x10cm-pris). Dit print betyder en 10x15cm-pris (som hos elecrow.com koster 9,9$+34,5$ ekskl. fragt for 10 stk). Hvis du havde lavet det 10x10cm, kan det laves for 14,90 på deres special deal (kun grøn solder mask).+


3
Hej Stig

Det er ikke specielt komplekst at lave sit eget arduino-kredsløb, men det kan være svært at få det til at fylde markant mindre end Nano'en. Du kan evt. nøjes med en Arduino Pro Mini, hvis det skal lidt længere ned (så skal du bruge et seriel-usb-kabel til at programmere med).

Et grundlæggende 'arduino'-kredsløb er beskrevet meget godt i Shrimp-projektet:
http://shrimping.it/blog/

Hvis timing ikke er super vigtigt, så kan man med lidt snilde spare 16MHz-krystallen og de tilhørende kondensatorer, og så bruge den interne 8MHz-oscillator. Man behøver strengt taget heller ikke en LED. Så med lidt snilde kommer man ned på
  • En Atmega-MCU
  • En ~10kohm pull-up til reset
  • Som minimum en 100nF kondensator til afkobling af VCC, og gerne til AVCC også, og helst også en større, fx. 10-100uF
    • Optional: En reset knap  :)

Og så skal man have strømforsyning, men man kan for det meste bare bruge 3 stk. AA-batterier, medmindre man er afhængig af en fast spænding.

Og så kan det være meget smart også at indbygge en programmerings-header, enten til en AVR-programmer, eller en seriel-programmering. Jeg foretrækker selv en AVR-programmer, da man så ikke er afhængig af en arduino-bootloader, men det er et spørgsmål om smag :-)

Hvis man laver det med SMD-dele, så kan det gøres ret småt, og man får formodentlig et print, der ikke fylder så meget i højden som en Arduino Pro Mini med headers. Og så kan det integreres, så det passer ind i de andre komponenter.

Hvis dit projekt ikke bruger så meget flash og/eller så mange pins, så kan det også være værd at overveje en mindre MCU, fx. en Attiny. Jeg har eksperimenteret lidt med en attiny13a (5 GPIO, 1 kb flash) og har lige fået en stak Attiny24a ind af døren (11 (vist nok) GPIO, 2kb flash). Men hvis du har kodet i arduino, så er det nok svært at komme så langt ned i størrelse. Men der findes også Attiny861, der har en del mere GPIO'er og 8kb flash.

En længere smørre af spredte tanker :-)[/list]

4
Artikler / Introduktion til vUSB - USB fra en billig AVR
« Dato: Marts 05, 2015, 14:57:54 »


Standarden inden for hobby-segmentet er at vi kommunikerer fra microcontroller til computeren via en seriel forbindelse. I de fleste AVR development boards (fx Arduino) er der en USB-til-seriel adapter indbygget, og ellers kan man finde en billigt på ebay.

Nogle gange ville det dog være rart at kunne forbinde direkte fra microcontrolleren til pc’en. Min grund til at eksperimentere med USB var specifikt at bygge en USB game-controller til at spille arcade-spil. Selve dimsen blev jeg aldrig færdig med, men til gengæld blev jeg noget klogere i processen.

OBS: Software nævnt i denne artikel forudsætter at du ved hvordan du kompilerer avr-gcc, og indlæser dem på din microcontroller. Hvis ikke, så vil jeg gerne anbefale bogen “Make: AVR Programming” af Elliot Williams. Alternativt er der sikkert hjælp at finde på google.

Virtuel USB
USB er en relativt kompliceret måde at kommunikere på, og derfor vil man typisk anvende hardware-implementeret USB. Det kræver dog at ens microcontroller har det, og det betyder oftest en ret heftig stigning i pris. Et eksempel på en sådan microcontroller er Atmega32U4, som er at finde i en Arduino Leonardo. På Mouser.com koster denne kr. 42,91, hvor en Atmega168PB koster kr 9,54. (Og så kan man få en atmega328p til nærmeste ingenting, hvis man er villig til at gamble på AliExpress). Derfor kan man, hvis man er en nærigpind, og ikke er bleg for at rode med lidt semi-obskur kode, bruge en virtuel USB-stack til at ‘emulere’ hardwaren. Standarden for dette er V-USB.

Hvis du tilfældigvis har købt en billig AVR-programmer fra ebay, så er der en ret god chance for at du allerede har stiftet bekendtskab med V-USB. USBasp og vusbtiny er ret udbredte på markedet, og begge er bygget med V-USB

Hardware
V-USB kræver kun en lille smule mere end det man normalt sætter på en AVR. Nedenstående diagram er fra forsiden af V-USB-projektets hjemmeside, og viser en Attiny2313. Jeg har dog mest eksperimenteret med en Atmega238P, men forskellen burde være minimal. (Jeg forstå dog ikke hvorfor de ikke har en pull-up på reset, men nok om det).



På en Atmega328P skal der (som minimum) være:
  • En pull-up (10 kohm) på reset, evt en reset-knap til at hive den ned igen.
  • Afkoblingskondensatorer på VCC og AVCC

For at få V-USB til at køre, så skal følgende også være på plads:
  • En krystal (12MHz anbefalet) på XTAL1 og XTAL2 (inkl passende kondensatorer)
  • Forbindelse gennem en 68 ohm modstand fra INT0 til D+ på USB
  • Forbindelse gennem en 68 ohm modstand fra en GPIO til D- på USB
  • En måde at få enten VCC ned til 3.3V eller en måde at få D+/D- -signalerne ned til 3.3V
  • En 1.5 kohm pull-up til D-.

De bedste, mest stabile signaler fås ved at regulere spændingen ned til 3.3V. Ovenfor gøres det ved at sætte to dioder i serie, men en lille linær regulator ville nok være bedre. På min første udgave af mit eksperiment gjorde jeg det ved hjælp af to zener-dioder på D+ og D-. Det er en billig løsning, og den virker, men Ralph Doncaster (http://nerdralph.blogspot.dk/2015/01/usb-interfacing-for-avr-microcontrollers.html) har vist at det ikke nødvendigvis er den gode løsning.

Mit projekt
Jeg satte mig for at bygge en mere generel løsning, som kunne bruges til lidt af hvert. Sådan en slags development board. Hulbræt-udgaven så sådan ud med et gamepad-’shield’ ovenpå:


(Jeg mangler et billede af den uden shield på, det kommer lige så snart jeg kan grave den op af projektkassen)

Efter at det var begyndt at virke finpudsede jeg lidt på diagrammet og kom frem til dette:


Det endte med at jeg fik lavet en PCB hos http://dirtypcbs.com, der så sådan ud:


Flere billeder, beskrivelse og link til github-side findes her: http://lab.kjlr.dk/p/handystick

Software
Med hardwaredelen vel overstået er vi ved sagens kerne: Software. Jeg indrømmer blankt at noget af dette er semi-sort snak for mig, men man kommer langt med lidt copy-paste.

Konfiguration - usbconfig.h
V-USB sættes op i usbconfig.h. Der er en masse indstillinger man kan fifle med; jeg vil gennemgå de vigtigste her - men det er nok en god idé selv at undersøge hvad de gør, og om der er andre der gør noget vigtigt.

Den første sektion er hardware-opsætning, altså clock-hastighed og hvilken port og pins USB-data-linjerne er forbundet til:
Kode:
#define USB_CFG_CLOCK_KHZ (F_CPU/1000) // Hardware-klokken i kHz. 
#define USB_CFG_IOPORTNAME D // Hvilken port. Jeg bruger D
#define USB_CFG_DMINUS_BIT 7 // Hvilken pin bruger D- - jeg har sat den på PD7
#define USB_CFG_DPLUS_BIT 2 //Hvilken pin bruger D+ - jeg har sat den på PD2

Hvis du bare gerne vil implementere allerede skrevet software, men på din egen hardware, så er dette muligvis det eneste du behøver at rette til. Hvis du gerne vil modificere lidt på det, eller skrive dit eget, så skal du også definere USB-klasse, samt det et vendor- og product-id, og du kan lave en tekst-beskrivelse af hvad produktet er.

Hvis du vil lave et HID (Human Interface Device, fx keyboard, mus eller joystick), så skal du også kigge på noget med længden af HID-description. HID devices er et specifikt og relativt omfattende emne, så jeg vil ikke gå dybere ind i det. Men du kan jo vælge at kigge på eksempel-softwaren til mit eksperiment ovenfor.

Vendor og Product ID
Hvis man skal lave et decideret produkt, og vil skrive på æsken at det er USB-kompatibelt, så skal man skaffe sig et vendor id, og man kan herefter bruge alle de product id’s. Vendor-id kræver et medlemskab hos USB.org (http://www.usb.org/developers/vendor/). Det koster dog USD 4.000 per år, så det er uden for mit hobby-budget. Så længe man arbejder med det på hobby-plan, så er der dog intet forgjort i at låne fra eksemplerne, eller endda tilfældigt finde på et - så længe man rammer et ikke-eksisterende produkt. Ellers kan det give rod med drivers.

Main-funktionen
Som i de fleste c-programmer er det main-funktionen der kører først, og det er dens opgave at kalde alle andre. Når al initialisering er overstået, er der typisk en uendeligt kørende løkke som denne:

Kode:
while(1) {
    usbPoll()
}

Dette er faktisk det eneste krav for en løkke; Man skal køre usbPoll-funktionen jævnligt for at sikre at det ‘administrative’ i USB-protokollen bliver overholdt. Man kan så sørge for at alt andet sker i interrupts. Jeg bruger i mit gamepad-eksempel følgende kode:
Kode:
while(1) {
    wdt_reset(); // Hold watchdog’en glad.
    _delay_ms(20); // Vent lidt for ikke at overdrive. Potentielt et problem for hardcore gamere.
    usbPoll(); // Administrativt USB-kald
    if ((reportBuffer.buttonMask!=readMask)&(usbInterruptIsReady())){ // Tjek om der er sket noget
      reportBuffer.buttonMask = readMask; // skriv ny buttonMask
      usbSetInterrupt((void *)&reportBuffer, sizeof(reportBuffer)); // Send data afsted
    }
}

Jeg har en 2-sekunders Watchdog timer kørende, der genstarter softwaren, hvis noget låser, men ellers er det nye if-sætningen, og den heri indeholdte kode.

“reportBuffer” er den struktur, der bliver sendt over USB’en. Den indeholder en 8-bits størrelse ved navn buttonMask. Fra anden runde af løkken vil den indeholde det, der sidst er blevet sendt afsted.

Jeg har interrupts defineret på GPIO’erne til at finde ud af om der er blevet trykket på en knap. Hvis der er sket noget, så bliver resultaterne indlæst i readMask, der er af samme type som buttonMask. If-sætningen sammenligner reportBuffer.buttonMask med readMask for at se om der er sket noget med readMask siden sidst der blev sendt data. Hvis dette er tilfældet, så bliver reportBuffer.buttonMask opdateret, og resultatet bliver sendt til usbSetInterrupt-funktionen.

På den måde vil der, hver eneste gang man trykker eller slipper en knap, blive sendt data til computeren, og man kan hoppe, kravle og skyde i et eller andet spil :-)

Videre eksperimenter
Jeg ville rigtigt gerne forstå USB-protokollen og V-usb software-driveren mere i dybden, og det tror jeg sker bedst ved at eksperimentere med de forskellige eksempler man kan finde på http://www.obdev.at/products/vusb/. Jeg kunne f.eks godt tænke mig at se lidt på hvordan man kunne styre et standard 16x2 LCD gennem USB, eller måske en LED-cube. Jeg håber på at komme videre, og så vil jeg prøve at opdatere med dybere artikler.

Jeg håber at denne artikel har givet dig en lille smule indblik i hvordan V-USB virker, og at du har fået mod på at eksperimentere. Jeg kunne godt bruge lidt erfaringsudveksling.

PS:
Faktisk kom der en bonus med mit eksperiment ovenfor. Man kan installere USBAspLoader på den, en bootloader, der ved at holde en knap nede under reset emulerer en USBasp AVR-programmer, som kan programmere sig selv. Det gør at man kan lave en absurd billig arduino-klon, dog uden serial.  Det er derfor at der er to knapper på PCB'en; én til reset og én til at starte USBasp.

5
Generel Elektronik / Sv: Hvor er vi flest?
« Dato: September 23, 2014, 08:39:55 »
Folk, det er ikke byer, I skal svare. Det er amter. Derfor vil Maribo Amt være dækkende for Nykøbing Falster. Udfordringen er naturligvis at det kun er gamle folk der kan huske hvilket amt deres nuværende bopæl lå i før 1970 :-). Men så må man støtte sig til kortet.

6
Generel Elektronik / Sv: Hvor er vi flest?
« Dato: September 22, 2014, 10:27:56 »
Jeg har valgt Københavns Amt. Det er godt nok Københavns Kommune (der aldrig var en del af amtet, af en eller anden grund). Men det må gå :-).

Jeg kan se at vi er helt tilbage i de gamle, gamle amter, altså fra før 1970.

Hvis du vil have hjælp til at lave et farvet kort over resultatet, så sig til. Det er jo trods alt mit 'rigtige' fag.

7
Andet lyd relateret / Sv: Lav en AUX-indgang på en gammel rør-radio
« Dato: September 18, 2014, 12:08:35 »
Og her var et diagram:
http://www.radiohistoriskforeningvest.dk/Diagrammer/Herofon-Petite-AM%20FM%20EJ-1958-Diagram.png.

Det skal jeg vist lige tygge lidt over, før jeg kan overskue. Gode clues modtages med kyshånd (eller uden, hvis man foretrækker det).

8
Andet lyd relateret / Lav en AUX-indgang på en gammel rør-radio
« Dato: September 18, 2014, 11:11:55 »
Halløj.

Min oprindelige plan var at skaffe en gammel busted radio, fjerne indmaden og derefter bygge en moderne forstærker og noget raspberry pi ind som lydkilde.

Men nu fik jeg tilfældigvis fingre i en radio i god stand, og som efter sigende skulle virke fortrinligt:


Og nu synes jeg egentligt at det er synd at strippe den. Derfor tænkte jeg om man kunne bruge én af kanalerne (den har FM, 4xAM og en grammofon-indgang) til en aux-kanal, fx til RPi'en.

Min første tanke var at bruge grammofon-indgangen. Men så vidt jeg husker, så er det typisk et meget svagt signal, der skal heri? Er det bedre at bruge fx en AM-indgang, og kan man 'bare' det? Hvilken slags lydsignal kommer der ud af sådan en fætter? Hvis man kunne bruge en AM-indgang, så er der flere (kort- mellem- og lang-bølge (og en FB?)), og så kunne man måske også have to aux-indgange?

Hvis I ikke på nuværende tidspunkt havde luret det, så er lyd ikke min stærke side :-)

9
Køb og Salg / Bortgives: Atmega development board til vUSB
« Dato: September 10, 2014, 17:32:13 »
Hej Elektronik'ere

Jeg blev aldrig færdig med min blog-serie om at bygge en billig arduino-klon. Det var mest fordi jeg fandt ud af at det var sjovere at nørkle med kredsløb, pcb-design og kode, end at skrive blog-indlæg.

Nu er jeg til gengæld færdig med mit næste projekt: Et lille Atmega board, det er lidt ala en arduino nano i størrelsen. Den har dog ikke noget USB<->Seriel-interface, men er i stedet beregnet til brug med vUSB. Hvis man bruger USBasploader, kan man få den til at fungere som sin egen programmer, men man kan også programmere den via ISP'en og bare bruge den til at lave en USB gamepad eller lignende.

Jeg har masser af PCB'er til overs (fik lavet 20), så hvis du betaler en 10'er for porto og kuvert, så sender jeg dig gerne én.

Læs mere her: http://lab.kjlr.dk/p/handystick

PS: Det kræver dog at du har mod på at lodde små SMD-dele (0603, 0805 og TQFP).

10
Køb og Salg / Sv: Gratis PCB -komponenter
« Dato: April 22, 2014, 16:21:12 »
Hej Danni.

Det ser spændende ud, og jeg synes at det ligner en god lille extra-feature med LLC'en. Det er både til Raspberry Pi, men også til andet 3.3V-udstyr.

Jeg synes måske at den er prissat en smule højt for den funktionalitet man får ud af den ift. fx. en Arduino Mega. Måske den kunne redesignes med to lag for at få prisen lidt nedad? Og jeg som jeg læser det, så er der komponenter med til $50-niveauet, men ikke hvis man køber flere?

Jeg er nok ikke interesseret i at købe produktet, men jeg vil gerne teste den for dig. Jeg tror at jeg har de fleste stumper - omend jeg godt kunne bruge en komponent-liste.

Jeg vil også gerne hjælpe med korrektur-læsning  :)

11
uProcessor / Sv: Hvilken PIC med +30 udgange ?
« Dato: April 16, 2014, 22:30:06 »
Så kan du bruge hvilken slags microcontroller du skal have lyst til og/eller have på lager.
Jo, men det vil da blive fråds af komponenter, når jeg alligevel skal have en PIC til at styre det, så er det da simplere med en PIC og ikke andre kredse end det.
Ja, det synes jeg bare det er.
.

Ja, det kommer jo an på om man måler fråds i antal af komponenter eller i komponent-omkostninger. Men okay, en PIC16F1789 er selvfølgelig ikke en særligt dyr fætter, så det kan godt være at det ender med at blive det samme.  Jeg plejer nok bare at være meget konservativ med mit brug af IO - jeg ender sjovt nok altid med at løbe tør for dem :)

Man kunne selvfølgelig også finde et shift-register med indbygget led-driver, så kunne man spare en masse modstande - men den slags er vist noget dyrere end 74hc595

12
Generel Elektronik / Sv: ohms lov: U & I
« Dato: April 16, 2014, 14:49:31 »
Det må simpelthen være smuttet i redigeringen? Nu har jeg siddet og stirret på det et par gange, og jeg kan ikke få det til at give mening

Der står rigtigt nok to modsatte ting i bogen.

En defensiv lærer vil naturligvis hævde at det er et pædagogisk trick til at få dig til at tænke over det ;)

Jeg håber at bogen er en førsteudgave, så kan man håbe at det bliver rettet i den næste udgave.

Det er derfor det er godt at kunne læse matematik. Jeg havde en professor der sagde "En god integral kan være mere sigende end et helt kapitels tekst".

13
uProcessor / Sv: Hvilken PIC med +30 udgange ?
« Dato: April 16, 2014, 13:29:13 »
Det er ikke det, du spurgte om, men jeg ville nok i stedet vælge at anvende nogle serielle shift-registers ala 74hc595 til opgaven. Du kunne fx komme 4 stk. i halen på hinanden for at få 32 outputs. på tre pins.

Så kan du bruge hvilken slags microcontroller du skal have lyst til og/eller have på lager.

74hc595 fås i både dip16 og sop16, og sikkert også endnu mindre.

14
Køb og Salg / Sv: Er Købt: 150 ohm smd 0805
« Dato: Marts 27, 2014, 20:24:57 »
Jeps, jeg var nede ved postkassen ved mit posthus lige før 18, så den skulle være på vej til dig (de tømmer den først kl. 20).

15
Wow!

Er det stadig i C?

Og du kan stadig angive et antal millisekunder - som holder nogenlunde præcist? Eller er det bare blink?

Argh! Så har jeg weekenden for mig! Pokkers, jeg har planer det meste af tiden.

Sider: [1] 2 3