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

Sider: [1] 2 3 ... 21
1
Det lyder som et project, vi kan da lade det sive, og også se om der er andre der bider på "tråden" så længe!  ;D

Ja, der skal nok være en del interesseret her i hovedlandet. :)

Citér
Men tag det nu med ro hr. packman, livet er sgu for kort til at gå og være stresset! (har selv været der!)

Man lærer af sine fejl... Nogle gange skal man gøre samme fejl 4-5 gange, før det siver ind. :(

2
Ja, Jeg er jo generelt ikke bange for at blive til grin såå..

Det bliver du ikke herinde. Dette forum er her, for at både nybegynder og garvede superbrugere kan få lov at lave bommerter. :)

Uden bommerter og fejl og "dumme spørgsmål" kommer man ikke ret langt. ;)

Citér
Jeg vil gerne lave en elektro magnet, og har faktisk prøvet bare at lege med et 9-volts batteri, lidt ledning og et søm.
Mit problem nu er at jeg faktisk ikke har forstand på el, men går ud fra at det betyder en del hvor meget kobber der er i ledningen jeg bruger, hvor tyk plastik der er omkring ledningen, og hvor stor en kerne af jern jeg bruger.

Lyder sjovt. Jeg husker da jeg var lille (for omkring 35 år siden, uha), dér lavede én af mine brødre en jernstang med ledning viklet rundt om, og direkte i stikkontakten. Kunne trække søm til sig fra 1/2 meter's afstand.

Citér
Sidst kan jeg nævne at lige nu er min plan at seriel-forbinde dem, dvs. lave flere magneter fra samme ledning, og så vikle det om flere jern kerner.
sååå ved faktisk ikke ikke noget om hvor meget mindre "strøm" der kommer videre til næste magnet, det kommer vil an på længden af ledningen.

...Her er et fingerpeg som ikke altid kan bruges, men er måske godt at have i baghovedet...
Når du serie-forbinder, får hver enhed (i dette tilfælde magnet) mindre spænding, og hver enhed bliver mere 'slap'.
Når du parallel-forbinder, sikrer du samme spænding til alle, men dimserne sluger mere strøm.

Citér
1. Kom gerne med generelle kommentare.
2. Har i et forslag til noget jeg kan/burde læse , gerne online ?
3. Nogen forslag til online butikker, hvor man kan bestille el ting, i mindre mængder ? (skal nok selv lige kigge på den diode side)

Absolut. El-Supply og PC-Elektronik er de forhandlere jeg selv foretrækker til sjov. Bor du i København kan det være praktisk for dig at smutte ind forbi Brinck, eller eventuelt RS-butikken (Du kan kun handle privat, hvis du tager til deres butik). Der er også AJ-Data i Hillerød eller Cypax i Karup (fysisk butik for private, men netbutik for erhverv kun).
...Der er også en del andre, men ovenstående er blandt mine favoritter.

Det kan måske være meget godt for dig at finde en god formel til at beregne modstanden i kobber. Ja, selv hvis regning er kedeligt, kan det faktisk gå hen og blive sjovt, når man har med elektronik at gøre.
Jeg har lavet noget, du måske kan blive inspireret af, hvis du kan JavaScript: spændingstabs-beregner.
-Ellers kan du tage værdierne og regne dem på lommeregner.
Formlen er så simpel, at selv jeg kan følge med: Spændingstab = modstand * ledningslængde / kvadrat
Ofte køber man ledning hos elektrikkeren, som er 1.5 kvadrat ("halvanden kvadrat"), det betyder at tværsnitsarealet er 1.5 mm2.

Er ledningen for tynd, vil den brænde over når du trækker for mange ampere, men det er du sikkert klar over. ;)

Mht. projektet... Jeg ved ikke ret meget om den slags; men uanset om det kommer til at fungere eller ej, vil du få en masse viden ud af at bygge det. Fungerer det, så vil du sikkert få en pengebonus oveni hatten. :)

Du bør nok have i baghovedet at en almindelig magnet i et sådant apparat vil fungere som et 'batteri'; magneter bliver afladt; selvom det går langsomt.

3
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: Januar 09, 2012, 20:22:57 »
Du skal da passe på dig selv.

J-j-ja, jeg ska'nok, jeg ska'nok.. (Kjeld fra Olsen-banden)

Citér
Jeg er gået videre med en udvidet udgave med display (16X2) og et menu system hvor jeg bruger knapper til at ændre værdier, og det går meget godt indtil videre.
Jeg bruger den atmega164pv10pu som du sendte med. og tror jeg har rimeligt styr på det indtil videre.
har endvidere udvidet med en forstærker det til at måle ph værdier og lidt andet.

Ikke tosset. :)

Citér
"krystallen" er i et metal hus og har 2 ben
Det er nok et krystal.. Mht. valg af kondensatorer til krystaller, så bør de nok oftest ligge mellem 12pF og 27pF (begge inklusive); helst ikke udenfor disse værdier. Jeg selv bruger gerne 18pF. (Jeg går ud fra at du brugte 12pF og ikke 12nF; forskellen er "x 1000").

Citér
Men nok om det. jeg koder løst og har faktisk lært en del ved at "stå på egne ben" så at sige.  :o

Man lærer meget ved at prøve sig lidt frem. Du har jo lidt pejling på hvad du gør, så du kommer aldrig til at sidde fast nogle steder. :)

Citér
Pas nu på dig selv. Jeg poster lidt en gang imellem, men forventer ikke at du binder dig eller noget. Det er jo heller ikke meningen at du skal være problem knuser for hele sitet.

Jeg har hele mit liv kørt mig selv hårdt og presset mig til det yderste. Det er ikke en god idé, så jeg vil ikke anbefale det videre til andre. ;)

4
jeg bor i staby ved ulfborg! så er da villig til at hoppe i bilen i ny og næ, for en klub-aften i herning området!  :)
den med biblioteket er da også en god ide!
30 km er langt, men det kan da være at vi kan samle lidt ressourcer sammen til et træf. Jeg ved der er nogle radio-amatører et sted i Herning også, måske der er elektronik-interesserede dér...

5
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: Januar 09, 2012, 19:24:32 »
Man bliver jo helt bekymret når du ikke er på så lang tid. Men går ud fra at du har haft en vanvittig travl december.

Jeg beklager at jeg ikke har været herinde så meget.
Der skete det, at jeg brændte ud. Stort set hele december forsvandt.

Nu kører jeg på stand-by mode, hvilket betyder at jeg ikke binder mig til opgaver eller giver nogle løfter.
Det ærgrer mig lidt, det er simpelthen nødvendigt. :(

Citér
Jeg har fået systemet til at virke som det skal, men har lavet lidt om i koden, for jeg kunne simpelthen ikke få tabellerne til at virke. Desuden var der ret meget støj på de laveste bits så var nød til at bruge målte værdier der. men når nu julen engang er overstået ville det være dejligt hvis du fik tid til at hjælpe med optimere koden, jeg er endt ud med ca. 18k. Til gengæld har jeg lært sindsygt meget med learning by doing metoden gg.
Men tusind tak for hjælpen indtil nu, og kan du have en FANTASTISK jul

Jamen i lige måde, og godt Nytår. :)

Citér
Ps he he jeg har en bims der ligner en clock krystal. der står txc 8.00g9nf er det det eller ??

Hmm.. Det kunne være en resonator.
En resonator er en modstand og kondensator der giver en cirka-frekvens.
Den er billigere end et krystal, men ikke så præcis.
Men hvis den er indpakket i et metalhus, så er det nok et krystal.
Har den 4 ben, er det nok en oscillator, hvilket vil sige at den har 1 ben der giver dig frekvensen.

Jeg er glad for at høre at du klarede at få det til at fungere.
...Men jeg er nødt til at holde en pause fra opgaver, så jeg må nok vente med at optimere koden.
Lidt ærgeligt at ADC'en var for upræcis med de nederste bits. -Var den stadig upræcis målt over flere gange og derefter taget gennemsnit?

6
ja fed ide! så mangler vi bare nogle flere fra det "mørke" Westjylland, så er jeg frisk!  ;D

West.. Ja, så heldig er jeg ikke; jeg er fra Midt (Hammerum v/Herning).

Hvis vi en dag laver et 'træf', kunne vi bare holde det på et bibliotek; nogle biblioteker udlåner gerne et lokale til grupper af personer med en bestemt interesse, fx. os. :)

7
nRF24L01 lyder rigtig spændende. Hvor kan man købe dem?

Undskyld det sene svar; jeg har haft vældig travlt og derfor ikke været på forum'et, men er snart på vej til at indhente hvad jeg er bagud.

Jeg selv sælger af dem til de nævnte priser. ;)
Dvs. Modul koster 25 kr ex. moms, chippen koster 15 kr ex. moms. :)
Jeg har 2 moduler på lager og der medfølger fladkabel med påduttet 10-pin IDC-stik.
Fragtpris er 12 kr incl. moms (konvolut + 8 kr porto), eller 40 kr ex. moms. hvis du vil have track & trace.
Der skulle være 7 IC'er på lager også. De er (som nævnt tidligere) af typen QFN20, så de er lidt svære at lodde, med mindre man har SMD-ovn og øvelse.

8
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 26, 2011, 23:53:05 »
nu har jeg simpelthen været ISR(ADC_vect) igennem fra a-z (det siger jeg hvertfald til mig selv :o ).
har enda haft lavet et komplet tomt program der kun tog sig af adc interrupt i free running mode og lige meget hvad
jeg gør så kræver det at jeg slukker og tænder for strømmen til avr, før den registrerer ændringer på adc'en. jeg kan ikke forstå det.

Mærkeligt. Der må være noget vi har glemt i opsætningen, for det skal kunne virke.

Citér

Lige et hurtigt spørgsmål.
hvis jeg vil ændre f_cpu kan jeg godt bare nøjes med at ændre clock i makefilen?
Nej.
lfuse skal ændres til 0xe2, hvilket sætter frekvensen til 8MHz (bit 7) plus CLOCK skal ændres så den passer til den nye frekvens. -Hvis du kun ændrer F_CPU, vil det virke som om microcontrolleren kører 8 gange langsommere.

Citér
og lige en ting til. ved ikke om det har betydning for hvordan chippen har det, men device signature er som den skal være.

Nogle gange laver Atmel nye chips, og de laver derfor nye 'Device Signatures'.
I sådanne tilfælde skal man lave en konfiguration til den nye chip i sin avrdude.conf (hvor den så end befinder sig).
avrdude brokker sig hvis device-signature er forkert; ellers oplyser den bare hvad device-signature er, derfor kan du bare ignorere denne besked. :)

9
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 22:54:59 »
Citér
Hele denne blok...
gg ok  :-[
men skal der være en ADCSRA |= (1 << ADSC);
både i initADC og i ISR(PCINT0_vect)
er det ikke nok at starte den et sted ?

Den starter kun én konvertering ad gangen. :)
-Den kører nemlig ikke kontinuerligt, men skal sættes igang manuelt hver gang.

10
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 22:41:51 »
mht til ADCSRA |= (1 << ADSC);
kan jeg så ikke lade den ligge i initADC og så en i startknappen. så i ISR(PCINT0_vect) fjerne ADCSRA |= (1 << ADSC);
lave en
if(adcChannel == ADC_LAST)
{
     ADCSRA |= (0 << ADSC);
}
hvis jeg gør det på den måde så køre timeren hvertfald.   

Hele denne blok...
Kode:
if(adcChannel == ADC_LAST)
{
     ADCSRA |= (0 << ADSC);
} 

...gør ingenting - bortset fra at bruge CPU-tid. :)

Det vil være bedre at sætte microcontrolleren op på 8MHz, eller gå bort fra at bruge ADC-interrupt.
-Da skal vi til at kigge på at aflæse ADC'en manuelt; dvs. lave 4 aflæsninger manuelt i streg.
Det kan så gøres i getADCxValue().

...Men bemærk; én aflæsning vil nok være for upræcist / ustabil, for den vil nok virke nogle gange, men andre gange vil den slå fejl.
Det er derfor bedst at tage 4 aflæsninger (eller 8) og så lægge alle aflæsningerne sammen, og sidst dividere med antallet af aflæsninger.
...Jeg siger 4 eller 8, fordi man så kan bruge bitskift operationer, hvilket er langt mere CPU-venligt end almindelige divisioner. :)

-Men da skal initADC være lidt anderledes.

11
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 21:26:57 »
I øjeblikket kører Timer1 på clk / 1; den kan bare sættes til clk/8, så kører den samme hastighed som nu. :)
-Vi har jo gemt 16-bit timeren til det vigtige. ;)

Her er lidt forberedelse på at skifte frekvens til Servo.c, plus forhåbentlig bliver koden lidt mere læsbar...
Kode:
#include "leds.h"

#define PRESCALER1	((0 << CS12) | (0 << CS11) | (1 << CS10))			/* clk / 1 (no prescaling) */
#define PRESCALER8	((0 << CS12) | (1 << CS11) | (0 << CS10))			/* clk / 8 */
#define PRESCALER64	((0 << CS12) | (1 << CS11) | (1 << CS10))
#define PRESCALER256	((1 << CS12) | (0 << CS11) | (0 << CS10))
#define PRESCALER1024	((1 << CS12) | (0 << CS11) | (1 << CS10))

#if (F_CPU <= 1000000)
#define PRESCALER	PRESCALER1
#else
#define PRESCALER	PRESCALER8
#endif

void initServo()

Længere nede, nemlig i initServo():
Kode:
	if(GPIOR2 == SERVO_ENABLED)
	{
		TCCR1B = (1 << WGM13) | (1 << WGM12) | PRESCALER;		/* set WGM to fast PWM, choose clock source */
	}

Jeg har ændret (1 << CS10) til PRESCALER

12
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 21:17:44 »
det hjalp desværre ikke. men er det nødvendigt med ADCSRA |= (1 << ADSC); i initADC kan jeg ikke bare flytte den der er i bunden af ISR(ADC_vect) op i toppen af ISR(ADC_vect) ? vil det ikke give det samme?
hvis det er ok så køre timeren hvertfald

Da vil ADC'en aldrig køre, for det er netop ADCSRA's ADSC, der starter ADC'en. (Analog-to-Digital-Start-Conversion).

13
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 21:15:45 »
Citér
Det var egentlig forberedt på at skulle læse 2 potmetre og 2 sæt DIP-switches. ;)
...Derudover regnede jeg med at du ville køre microcontrolleren på 8MHz
ja der er rigtigt. regnede også med at der var derfor at adc prescaleren var sat til 128.
mht at køre 8 mhz. den eneste grund til ikke at gøre dette er at jeg har læst at det skulle være sværre at lave den 20 ms cycle der skal bruges til servoen. ellers er der ikke nogen grund. til ikke at gøre det

I øjeblikket kører Timer1 på clk / 1; den kan bare sættes til clk/8, så kører den samme hastighed som nu. :)
-Vi har jo gemt 16-bit timeren til det vigtige. ;)

14
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 20:53:29 »
kan man ikke lave en løsning hvor den kun aflæser adc værdierne når der trykkes på start knappen? der er jo ingen grund til at den kigger på dem når programmet er startet op, med mindre mam selvfølgelig vil ændre doseringen, men så ma man trykke på start når det er gjort. så skal ADC interruptne jo kun køres enten ved tryk på start, eller ved timer0elapsed

Selvfølgelig. Det var egentlig forberedt på at skulle læse 2 potmetre og 2 sæt DIP-switches. ;)
...Derudover regnede jeg med at du ville køre microcontrolleren på 8MHz.
Men du kan til at starte med, prøve at kalde initADC(10) fra main().
Og så i ADC-interruptet lave følgende lille ændring, det skulle give lidt mere CPU-tid:

Kode:
ISR(ADC_vect)
{
	uint8_t		adLo;
	uint8_t		adHi;

#if 0
	if(adcBits <= 8)																	/* using 8-bit precision */
	{
		if(ADCSRB & (1 << ADLAR))														/* check hardware alignment-configuration and act accordingly */
		{
			adLo = 0;
			adHi = inb(ADCH);															/* (read highbyte only) */
		}
		else
		{
			adHi = 0;
			adLo = inb(ADCH);															/* (read highbyte only) */
		}
	}
	else
	{
		adLo = inb(ADCL);																/* read lowbyte before highbyte! */
		adHi = inb(ADCH);																/* read lowbyte before highbyte! */
	}
#else	/* always 10-bit */
	adLo = inb(ADCL);																	/* read lowbyte before highbyte! */
	adHi = inb(ADCH);																	/* read lowbyte before highbyte! */
#endif
	adcValue[adcChannel - ADC_FIRST][adcWriteIndex] = (adHi << 8) | adLo;				/* save the value we've read above */

	if(adcChannel++ >= ADC_LAST)														/* next channel. If channel reached last channel... */
	{
		adcChannel = ADC_FIRST;															/* ...start over */
		adcWriteIndex = adcWriteIndex >= (ADC_SIZE - 1) ? 0 : (adcWriteIndex + 1);		/* increment write position and wrap if necessary */
		adcReadIndex = adcReadIndex >= (ADC_SIZE - 1) ? 0 : (adcReadIndex + 1);			/* increment read position and wrap if necessary */
		if(adcCounter < ADC_STABLE)														/* if we haven't reached the number of conversions required for the ADC to stabilize... */
		{
			adcCounter++;																/* increment counter */
		}
	}
	ADMUX = (0 << REFS1) | (0 << REFS0) | (adcChannel & 0x07);							/* set which channel to read next time */
	ADCSRA |= (1 << ADSC);																/* start another conversion */
}

Her har jeg sat #if 0, #else og #endif ind. Jeg har også kopieret de 2 linier, som håndterer 10-bit konvertering.
Der spares nu omkring 10 ... 11 clock cycles i interruptet, og derfor burde det køre en smule bedre. Om det er nok, vil en prøve vise.

Jeg har en lille modifikation til Timer0.c...

I TIM0_OVF_vect:
Kode:
#if (F_CPU > 2000000)
	TCNT0 = 256 - ((uint8_t) ((F_CPU / 256) / 125));		/* interrupt occurs 125 times per second. */
#else
	TCNT0 = 256 - ((uint8_t) ((F_CPU / 64) / 125));			/* interrupt occurs 125 times per second. */
#endif

I initTimer0:
Kode:
#if (F_CPU > 2000000)
	TCCR0B = (0 | (0 << FOC0A) | (0 << FOC0B) | (0 << WGM02) | (1 << CS02) | (0 << CS01) | (0 << CS00));	/* using PRESCALER256 */
#else
	TCCR0B = (0 | (0 << FOC0A) | (0 << FOC0B) | (0 << WGM02) | (0 << CS02) | (1 << CS01) | (1 << CS00));	/* using PRESCALER64 */
#endif

-For så kan du nemlig skifte mellem 1MHz og 8MHz som du har lyst. :)

15
Generel Elektronik / Sv: hjælp til servo kontrol med timer
« Dato: November 25, 2011, 20:31:27 »
det er linjen ADCSRA |= (1 << ADSC);
der skaber problemer i initADC
kommenterer jeg den ud starter uret med at køre inittimer

Hmm, måske har vi stadig for mange ADC-interrupts per sekund. Vil lige kigge lidt på det.


Sider: [1] 2 3 ... 21