Hjälp mig hitta rätt krets

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Inlägg av jesse »

Dioden ska vara för att återkoppla den första AND-grinden så att den bibehåller "etta" tills signal kommer på någon av den andra två ingångarna. Den är alltså mycket viktig. Detta förutsätter att insignalen inte drar ner till noll vid "nolla" utan använder sig av ett "pull-down" motstånd. Egentligen är detta en OR-funktion, fast med diod istället för en grind. (normalt behöver man två dioder och ett motstånd men har man en tryckknapp så kan man plocka bort den ena dioden.

Värre är det med de hopkopplade utgångarna på AND-grindarna. Detta kommer att göra att de kommer att kortslutas om de båda utgångarna får olika värden. Det är alltså något logiskt tankefel här. Inga utgångar får någonsin kopplas ihop direkt (kretsen brinner)! Frågan är vad du vill ska ske med dessa två signaler? Det krävs lite mer tänkande där. Ser fram emot nästa ritning!

EN AVR - t.ex. Attiny2313 har 18 in och utgångar och kostar 19Kr exkl moms på electrokit. Den klarar uppgiften utan problem. Men att lära sig programmera tar tid (och är ganska knepigt i början - man måste ha tungan rätt i mun) och att få någon annan att göra det?? kanske en entusiast... antar att det tar några timmar innan det blir exakt som man vill ha det. Det är dock ett väldigt simpelt program så helt jobbigt borde det inte vara.
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

Om nån hade kunnat programmera en så här så skulle jag vara skitglad :)

Så där ja, nu sitter inte and utgångarna ihop men fyller samma funtion.
Länk till schema.

De två och kretsarnatjänar 2 systen. Första är att se till så att när den får en signal så stängs de andra ingångarna så att inte dom kan öppnas så länge den första kretsen får en signal. Derimot om den slutar få signal så kan de andra aktivera sin utport och stänga den första om dom får en start signal. Den andra är till för att hålla signalen aktiv även fast den slutar få en signal men stängs av så fort någon annan signal ingång aktiveras.


----
Än en gång: Lägg inte upp sådär stora bilder. Länka till dem om de är över 700 pixlar i bredd.
Det står ju klart och tydligt när man skriver ett inlägg!
//Jimmy
----
Lars1970
Inlägg: 192
Blev medlem: 22 februari 2008, 22:30:36
Ort: Stockholm

Inlägg av Lars1970 »

Diod kopplingen återkopplingen har jag aldrig sett tidigare...

Om du specar vilka värden in och motsvarande utsignaler ska ha i tabell form så kan man räkna på det med boolsk algrebra och därmed översätta det till grind nät så kanske det skulle underlätta vid granskingen av schemat...

Vet inte om jag fattade det rätt men om det är någon form av återkoppling utifrån tidigare värden så kanske det rentav krävs en tillståndsmaskin (FSM) för att lösa uppgiften...
Användarvisningsbild
Icecap
Inlägg: 26635
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

dvine:

Kod: Markera allt

/*********************/
/*                   */
/* Radiobuttons.c    */
/* © Icecap 20080520 */
/*                   */
/*********************/

typedef unsigned char BYTE;
typedef unsigned int  WORD;
typedef unsigned long DWORD;

#define true  1
#define false 0

void Initialize_Hardware(void);

void main(void)
  {
  BYTE Input;
  Initialize_Hardware();
  while(true)
    {
    Input = PORTA; // Read input only once per loop
    switch(Input)
      {
      case 0x01:
      case 0x02:
      case 0x04:
      case 0x08:
      case 0x10:
      case 0x20:
      case 0x40:
      case 0x80: // Alter ONLY if one of these patterns
        PORTB = Input; //Change output if only ONE of the inputs are '1'
      break;
      // All other combinations gives no action.
      }
    }
  }

void Initialize_Hardware(void)
  {
  TRISA         =  0xFF; // All input
  TRISB         =  0x00; // All output
  PORTA         =  0x00; // Set to all '0'
  PORTB         =  0x00; // Set to all '0'
  OPTION_REG    =  0x87; // Well...stuff!
  CMCON         =  0x07; // No comparator inputs
  }
Kompilerat till PIC16F628A:
:100000001328FF3FFF3FFF3FFF3003138316850098
:1000100086018312850186018730831681000730AF
:1000200083129F00080004200508A0001A28200859
:1000300086003A282008013A031917282008023AB6
:10004000031917282008043A031917282008083A2A
:10005000031917282008103A031917282008203AF6
:10006000031917282008403A031917282008803A56
:100070000319172814283B28FF3FFF3FFF3FFF3F8E
:02400E00383F39
:00000001FF

Sådär ja, ingen programmering behövs.

PORTA är input, ska ha pull-down och du kan använda upp till 8 ingångar.
PORTB är utgången, minns inte om någon ska ha en pull-up pga. open-source utgång, läs i databladet om det.

Tillsätt en avkopplingskondensator och 5V, skaka väl och använd.
Senast redigerad av Icecap 21 maj 2008, 18:15:27, redigerad totalt 1 gång.
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

oj vad jag önska va de var du just skrev och hur jag kan använda mig av det :)
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Hur många är "några" ?

(Eftersom du inte svarade förra gången, så frågar jag igen...)
Användarvisningsbild
Icecap
Inlägg: 26635
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag tror att sodjan kan sälja dig programmerade PIC16F628A om du ber snällt (och betalar såklart).
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

tionde inlägget svara jag på hur många. Men om jag helgarderar mig och säger 5st med minst 6in och ut anslutningar. Jo då nå är jag villig och ge en slant om du kan fixa det åt mig + lite instruktioner hur den kopplas in ;)
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> tionde inlägget svara jag på hur många.

Aha, shit, jag missade det... :-) :-)

5-6 st 16F628A kan jag snabbt flasha, om det finns ett
funggerande program.

En annan sak...
Hur kort är den kortaste pulsen som kretsen ska kunna uppfatta ?
En PIC kör ju ett program, och då kan det bli problem att se
riktigt korta pulser, säg mindre än ett par mikrosekunder.
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

Pulsen kommer vara ungefär lika lång som en knapp tryckning på en fjärr kontroll. Vitsen med denna krets är att jag ska skapa en knapp lös kontroll. I stället för knappar kommer jag använda mig av sensorer som känner av när fingret är nära och då ge en signal ända till fingret tas bort, typ som en tryck knapp.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, då ska det inte vara något problem...
Mail mig så får vi se...

Notera igen : *OM* det finns ett fungerande program...
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

Icecap. Kan du säga mig vad den dära programkoden gör med kretsen. Alltså läs din egen kod och förklara vad den gör. Säg inte den gör vad du vill utan säg avd den gör så jag kan se i fall den verkligen är vad jag vill ha. Jag tänker nämligen låta Sodjan flasha den koden så jag vill vara 100% säker på att den stämmer så det inte blir någa knas senare :)
Användarvisningsbild
Icecap
Inlägg: 26635
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Har uppdaterat med lite fler kommentarer men det är oerhört enkelt:
1: Ställ in portar rätt samt vad som annars behövs ställas rätt för att den ska köra. Detta göras en gång vid uppstart.

2: Läs ingångar (PORTA) och spara i en variabel. Varje bit (8 st) motsvarar en ingång.
3: Om den läste PORTA motsvarar att ENBART 1 bit är '1', oavsett vilken, kopieras det läste värde till PORTB.
4: Gå till 2.

Följande kombinationer kan ju tillåtas:

Kod: Markera allt

 Binärt    Hex
'00000001' 0x01
'00000010' 0x02
'00000100' 0x04
'00001000' 0x08
'00010000' 0x10
'00100000' 0x20
'01000000' 0x40
'10000000' 0x80
Om enbart en ingång på PORTA går '1' kommer denna bit att skickas till PORTB, om fler än 1 för det sker det inget. Om ingen är '1' händer inget heller.

Den startar med att alla utgångar är '0'.
dvine
Inlägg: 31
Blev medlem: 18 maj 2008, 22:13:27
Ort: Gällivare
Kontakt:

Inlägg av dvine »

Vad händer om ingång 1 får en signal som hålls och strax efter får ingång 2 också signal som hålls? Vid en händelse som denna så ska utgång 1 aktiveras och inget ska hända med ingång 2. Om däremot ingång ett tappar signalen och ingång 2 fortfarande får signalen så ska utgång 2 aktiveras och ettan ska släckas. Om sedan ingång 2 tappar signalen så ska ut portarna vara oförändrade, dvs att utgång 2 fortfarande gäller (senaste ensamma port som fick signal). Om nu fyran får en signal som hålls så ändras ut porten till 4 och i fall 5:an får signal så stannar fyran kvar, om nu femman förlorar signalen så är fortfarande fyran den som gäller eftersom den fortfarande har signal.

Om jag förstår denna mening korrekt så är det som jag just gjorde ett exempel?
Om enbart en ingång på PORTA går '1' kommer denna bit att skickas till PORTB, om fler än 1 för det sker det inget. Om ingen är '1' händer inget heller.
Vad menar du med avkopplings kondensator? Kan inte minnas att jag någonsin använt en sådan när vi kopplade på el-gymnasiet :). Kan det vara till för att hålla spänningen stabil? Sorry för att jag är så pass ny men jag lär mig ^_^

Btw, är det nånting speciellt jag bör tänka på när jag ska ha denna konstant anslutet i bilen (altså inkopplad även när bilen är avstängd så den inte förlorar minnet)
Användarvisningsbild
Icecap
Inlägg: 26635
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

På alla (speciellt) digitala kretsar behövs det avkoppling. En 100nF keramisk kondensator så nära matningen av kretsen som praktisk möjligt är bra! Anledningen är att kretsen i sig skickar ut störningar och vill det sig illa kan den felfunktionera av den anledning.

Och kom ihåg att allt här är 5V matning och signaler, inget annat!

OK, jag förklarar funktionen på ett annat sätt:
* Om enbart 1 ingång är aktiv ('1') sätt den motsvarande utgång, i alla andra kombinationer händer det inget alls. Den aktiva utgången ändras ENBART om detta är sant.

Om ingen, 2, 3, 4 eller 8 ingångar är aktiva samtidig har ingen betydelse, inget händer förrän enbart 1 ingång är aktiv ('1'). Om du t.ex. kopplar ihop 2 ingångar och växlar mellan '0' och '1' på dom ska den inte reagera på det.

Det som gäller är alltså att det sista signal som består av bara en enda ingång aktiv sparas på ut-porten.
Senast redigerad av Icecap 22 maj 2008, 09:07:44, redigerad totalt 1 gång.
Skriv svar