» trådar » Reparation, modernisering »Hur man blinkar en ficklampa för att ändra driftsätt

Hur man blinkar en ficklampa för att ändra driftsätt


Författaren till detta material tyckte inte om de normala driftsätten för ficklampan BLF A6. Sedan bestämde han sig för att blixta mjukvarudelen av ficklampan och ställa in dess lägen. Som det visade sig är detta inte så enkelt, det finns ett minimum av information om firmware och pinouts och han var tvungen att samla in den bit för bit. Och så att hon inte skulle gå vilse, bestämde han sig för att hjälpa andra och ordna allt i en artikel.

Så för arbete behöver du följande:
Ficklampa BLF A6 (förmodligen kommer det att fungera med andra ficklampor baserade på ATtiny).
Pincett / tunna tång / små saxar.
En dator för firmware, helst med Linux-distribution.
USB ASP / programmerare Arduino / något som AVR-programmering kan göra (uppenbarligen är USB ASP-programmeraren bättre, men guiden använde Arduino).
Hög hastighet Rail-to-Rail-förstärkare [SOIC-8] (du kan klara utan den, men den är väldigt obekväm).
Utvecklingskort och jumpertrådar för anslutning.

Firmware.
Firmware för BLF A6 (och många andra ficklampor) finns tillgängligt här. Här finns ett diskussionsforum länken.
Du kan ladda ner firmware genom att söka "bzr branch lp: flashlight-firmware". Behöver ficklampa-firmware / ToyKeeper / blf-a6-mapp. Den innehåller en sammanställd fil. hex, redo för firmware (blf-a6.hex) och C-kod, som också kan ändras (blf-a6.c). Om du vill flasha firmware kan du hoppa över nästa steg och bara använda blf-a6.hex. En del annan firmware i detta arkiv fungerar förmodligen också.

Byt firmware.
Varning symboler, för att inte förvrida betydelsen, ges utan översättning.
Öppna blf-a6.c i din textredigerare eller IDE. De mest intressanta linjerna är lägesgrupperna mellan raderna 94 och 109. De ser så här ut:
// Lägesgrupp 1
# definiera NUM_MODES1 7
// PWM-nivåer för den stora kretsen (FET eller Nx7135)
# definiera MODESNx1 0,0,0,7,56,137,255
// PWM-nivåer för den lilla kretsen (1x7135)
# definiera MODES1x1 3,20,110,255,255,255,0
// Mitt prov: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Krono-prov: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// PWM-hastighet för varje läge
#definiera MODES_PWM1 FAS, FAST, FAST, FAST, FAST, FAST, FASE
// Lägesgrupp 2
#definiera NUM_MODES2 4
# definiera MODESNx2 0,0,90,255
# definiera MODES1x2 20,230,255,0
#definiera MODES_PWM2 FAST, FAST, FAST, FASE

För varje grupp är MODESN PWM-värdet som används för FET, och MODES1 är PWM-värdet som används för 7135 i varje läge. Antalet sträcker sig från 0 till 255 och motsvarar ljusets ljusstyrka. Mer information
här. (bläddra ner till "Mode control:") Befälhavaren är inte säker på vad PWM-hastigheten är.Om någon vet, berätta i kommentarerna. En fälteffekttransistor kan producera mer ljus än 7135, men 7135 håller ljusnivån mer eller mindre densamma under batteriets livslängd, medan ljuset dimmar när batteriet tar slut när en fälteffekttransistor används.

Här kan vi justera PWM-värdena för att skapa lägen efter vår önskan. Du kan också ändra antalet lägen, men befälhavaren gjorde det inte eftersom han behöver fyra lägen, och det är numret i den andra gruppen. Han ville ha en mörkare månljusregim och satte därför den första till 0/1. Han anser också turboläget som lite meningslöst, så jag ersatte det med 137/255, vilket motsvarar det sjätte läget i en grupp med sju lägen.

När du har den kod du behöver måste du sammanställa den till en .hex-fil. Du behöver åtminstone gcc-avr och avr-libc. Om du har problem kan du titta på andra beroenden i readme-filen. Förvaret innehåller ett build-skript, så allt du behöver göra är att köra:
../../bin/build.sh 13 blf-a6
i mappen blf-a6. ../../Bin/build.sh är skriptet. 13 indikerar att det är för ATtiny13, och blf-a6 indikerar att det är för BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -fshort -enum -o blf-a6.o -c blf-a6.c
avr-gcc -Vägg -g -Os-mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy - set-section-flaggor = .eeprom = allokera, belastning - utbytessektion-lma .eeprom = 0 - ingen-ändring-varningar -O ihex blf-a6.elf blf-a6.hex
Program: 1022 byte (99,8% full)
data: 13 byte (20,3% full)
Lagen är redan optimerade i storlek, så om det skrivs att de är mer än 100% fulla, försök ta bort
#definiera FULL_BIKING_STROBE

Linje 125 stavar små cykel strobe ljus. Om detta inte räcker, måste något annat skäras.
När sammanställningen är klar bör mappen innehålla en fil med namnet blf-a6.hex. Detta är en kod, redo för firmware.

Demontera ficklampan.
Skruva ur ficklampans strålkastare. Det finns två skruvanslutningar. Den som är närmare ficklampan fixerar reflektorn och lysdioden, och den som är närmare mitten fixerar kortet. Vi behöver ett genomsnitt.

Inuti ser du en snäppring med en fjäder och två hål längs kanterna. Sätt i pincett / tunna tång / sax i hålen och vrid dem moturs.

När ringen har tagits bort har du åtkomst till kortet. Det är fortfarande fäst med två ledningar, så var försiktig. De är vridna ihop, så rotera brädet tills trådarna är lösa. Vänd sedan brädet. Det är nödvändigt att chipet med inskriptionen "TINY13A" var mer tillgängligt.

Om ledningarna är korta och det inte fungerar, måste du ta bort kortet.






Connection.
Nu måste du förbereda brädet för firmware.
Guiden använder SOIC8 för att ansluta ATtiny13-chipet och programmeraren.
Hur man blinkar en ficklampa för att ändra driftsätt



Se fotot när guiden gör anslutningen. Lägg märke till den röda linjen i den andra figuren.

Om du använder USB ASP V2.0 programmeraren måste du ansluta den så här:
Pin 1 på ATtiny13 - Pin 5 på USB ASP (återställning)
Pin 4 på ATtiny13 - Pin 10 på USB ASP (Ground)
Pin 5 på ATtiny13 - Pin 1 på USB ASP (MOSI)
Pin 6 på ATtiny13 - Pin 9 på USB ASP (MISO)
Pin 7 på ATtiny13 - Pin 7 på USB ASP (SCK)
Pin 8 på ATtiny13 - Pin 2 på USB ASP (VCC)

Om du använder Arduino, som guiden, följ dessa steg:
Öppna Arduino IDE och se till att din Arduino är ansluten till datorn. Hitta ISP-skissen i Arkiv> Exempel> 11.ArduinoISP> ArduinoISP och ladda upp den till Arduino. Anslut sedan ATtiny13 till den på följande sätt:
Pin 1 on ATtiny13 - Pin 10 on Arduino (reset)
Stift 4 på ATtiny13 - GND på Arduino (Ground)
Pin 5 på ATtiny13 - Pin 11 på Arduino (MOSI)
Pin 6 på ATtiny13 - Pin 12 på Arduino (MISO)
Pin 7 on ATtiny13 - Pin 13 on Arduino (SCK)
Stift 8 på ATtiny13 - VCC / 5V eller 3,3V på Arduino (5V föredragen)

Firmware.
Steg 5: blixt
För firmware måste du installera AVRDUDE. För att kontrollera om detta fungerar med Arduino skriver guiden ett kommando:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Om detta fungerar, gå till den tomma mappen och registrera:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Gör en säkerhetskopia av befintlig firmware. För att blinka, från mappen med den modifierade blf-a6.hex börjar den:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Du måste ange stk500v1 som programmerare och ange port och dataöverföringshastighet. Om du använder Arduino och är osäker, försök att koppla från ATtiny13 från Arduino och ladda upp skissen till Arduino IDE med dessa inställningar. Detta fungerar inte, men du kommer att ta reda på vilket kommando som används i konsolfönstret. Därefter kan du kopiera attributen till AVRDUDE-kommandot.

Om du använder en USB ASP-programmerare, kör:
avrdude -v -p attiny13 -c usbasp -n
För att se om detta fungerar:
avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Gör en säkerhetskopia:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhuse: w: 0xFF: m
För att blinka:
-Uflash: w: blf-a6.hex. Byt ut blf-a6.hex med ditt filnamn om det är annorlunda.
-Ulfuse: w: 0x75: m och -Uhuse: w: 0xFF: m
Om ett fel inträffar, betyder det att bildfilen är för stor för att passa i chipet, och du måste ta bort en del av koden. Om allt är normalt bör vissa framstegsindikatorer visas och orden "avrdude gjort. Tack."
När du har blinkat chipet, montera ficklampan och se om det fungerar.
Fråga \ ämne publiceras automatiskt i det sociala. webbplatsnätverk - håll dig anpassad för svar där:

Lämplig för ämne

Relaterade ämnen

Lägg till en kommentar

    • lelerxaxaOKdontknowyahoonea
      bossscratchluraJaja-jaaggressivhemlighet
      ledsendansdance2dance3benådningHjälpdrycker
      stoppvännerbragoodgoodvisselpipasvimningsanfalltunga
      rökklapparcraydeclarehånfulldon-t_mentionnedladdning
      hettaRASANDElaugh1mdamötemoskingnegativ
      not_ipopcornstraffalässkrämmalarmrapportersök
      hånthank_youdettato_clueumnikakutöverens
      illabeeeblack_eyeblum3rougeskrytaledan
      censureradepleasantrysecret2hotasegeryusun_bespectacled
      shokrespektlolprevedvälkommenkrutoyya_za
      ya_dobryihjälparene_huliganne_othodiFLUDförbudstänga

Vi rekommenderar att du läser:

Räcka den till smarttelefonen ...