kloksnelheid attiny85

Hardware geleverd door Arduino
Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: kloksnelheid attiny85

Berichtdoor ercmrj » 09 Mrt 2014, 09:26

Die andere delay had ik al gevonden en uitgeprobeerd.

Maar er is iets geks aan de hand heb ik nu ontdekt. Ik ben ook een soort km teller aan het maken en gebruik de sensor van een oude kmteller van een fiets. Nu zie ik duidelijk, als ik langzaam aan het wiel draai en de magneet staat bij de sensor, dat ik 5 V op de inputpoort van de attiny heb staan. Als die ingang hoog is gaat er een ledje aan wat aangesloten is op poort 0. Nu brandt het lampje niet altijd meteen, de ene keer wel maar de andere keer duurt het 1 seconde ofzo voordat de ledje aangaat terwijl ik toch duidelijk meteen 5V op de inputpoort zie staan op mijn digitale multimeter.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: kloksnelheid attiny85

Berichtdoor nicoverduin » 09 Mrt 2014, 09:59

Laat je code maar eens zien
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: kloksnelheid attiny85

Berichtdoor ercmrj » 09 Mrt 2014, 13:34

Code: Alles selecteren
//const int beep_pin =  13;      // arduino
const int beep_pin =  0;      // attiny
//const int button_pin =2;       //arduino
const int button_pin =1;       //attiny
double tijd;
double tijdoud;
double interval;
double speedoud=0;int sp;

// variables will change:
volatile int buttonState = 0;         // variable for reading the pushbutton status
volatile float kmu=0;

void setup() {
  // initialize the LED pin as an output:
  //Serial.begin(9600);
  //pinMode(ledPin, OUTPUT);
  pinMode(beep_pin, OUTPUT); //beep
  // initialize the pushbutton pin as an input:
  pinMode(button_pin, INPUT);
  attachInterrupt(0, blink, CHANGE);
}

void piep()
{
     digitalWrite(beep_pin,HIGH);
     delay(1000);
     digitalWrite(beep_pin,LOW);
}

void waarschuwing(int km_u)
{

  if  (km_u < 49)
                                                      { sp=0;}
  if ( (km_u > 51) && (km_u<59) )
                                                       { sp=1;}
  if ( (km_u > 61) && (km_u<69) )
                                                       { sp=2;}
  if ( (km_u > 71) && (km_u<79) )
                                                        { sp=3;}
  if ( (km_u > 91) && (km_u<99) )
                                                         { sp=4;}

  if ( (km_u > 101) && (km_u<119) )
                                                         { sp=5;}

  if ( (km_u > 121) && (km_u<141) )
                                                         { sp=6;}



  if (sp>speedoud)
   {
     switch (sp)
     {
      case 1:
        {piep();}
        break;
      case 2:
        {piep();}
        break;
      case 3:
        {piep();}
        break;
      case 4:
        {piep();}
        break;
      case 5:
        {piep();}
        break;
      case 6:
        {piep();}
        break;
      default:
        {}
      }
    }
  speedoud = sp;

}

void loop(){
//Serial.println(kmu);
waarschuwing(kmu);
}

void blink()
{
  buttonState = digitalRead(button_pin);
  if (buttonState)
       {
           //Serial.println(kmu);
      tijd = millis();
      interval = tijd - tijdoud;
      tijdoud = tijd;
      kmu=(1000/interval)*((1.65*60*60)/1000);
           digitalWrite(beep_pin,HIGH);
         while (buttonState) { buttonState = digitalRead(button_pin); }
          // delay(40); // is een omwenteling bij 150 kmu
          digitalWrite(beep_pin,LOW);
       }
   else
      {      }

}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: kloksnelheid attiny85

Berichtdoor nicoverduin » 09 Mrt 2014, 18:02

Ik was al een beetje bang dat je het zo oploste. Maar mijn vraag is, wat voor signaal krijg je van de sensor? pulse? haperende pulse? Of is het gewoon een spoeltje dat een magnetische veld verandering oppikt?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: kloksnelheid attiny85

Berichtdoor ercmrj » 09 Mrt 2014, 21:16

Dat zou ik niet durven zeggen wat voor signaal ik krijg, ik heb geen oscilloscoop. Ik kan alleen maar meten dat ik, als ik op een draad 5 Volt zet, op de andere 5 Volt krijg als ik met een magneet langs de sensor ga.

Als ik de sensor vervang door een drukknop werkt het wel goed.
Is het misschien zo dat het signaal dat ik van de sensor krijg soms te zwak is en ik het moet versterken. Ik heb op internet wel zoiets gevonden waarbij ze met een comparator en flip-flop het signaal versterken.
Met een transistor het signaal versterken werkt in ieder geval niet dat heb ik geprobeerd.

Wel vreemd dat de uno wel goed werkt, of is die wat gevoeliger?

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: kloksnelheid attiny85

Berichtdoor pjh » 09 Mrt 2014, 21:51

Even terzijde: moeten de variabelen in de interrupt niet àllen volatile zijn. :?:

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: kloksnelheid attiny85

Berichtdoor nicoverduin » 09 Mrt 2014, 22:17

Niet terzijde maar juist beantwoord :)

Verder als het met een drukknop werkt en niet met de sensor. Zit je dan niet verkeerd te kijken? Dat de UNO wel werkt zou ik eerder houden op toeval.... Maar zonder scope.... geen idee wat voor signaal je krijgt..... en met een transistor werkt niet????? Misschien belast je de bron te veel?
Dus of die sensor nu een reed switch is? hal sensor? inductie spoel? impedantie van de schakeling?

En eigenlijk heb je ook geen idee wat je aan het meten bent?????

Dat klinkt allemaal veelbelovend......
Voorlopig heb je nog wel ff wat huiswerk voordat je het probleem bij de tiny moet leggen lijkt mij...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: kloksnelheid attiny85

Berichtdoor ercmrj » 14 Mrt 2014, 09:25

Ik geef het voorlopig maar op met die attiny's.

Het lukt me niet om een programma te schrijven wat werkt. Er zit totaal geen logica in de foutmeldingen die ik krijg. Zelfs als ik regels uit een onderprogramma, wat ik tijdelijk niet gebruik, verwijder of toevoeg dan geeft hij de ene keer een foutmelding en de andere keer niet.
Ook als ik een programma waarin ik niets gewijzigd heb een 2e keer laad dan krijg ik de ene keer een foutmelding en de andere keer niet terwijl ik niets gewijzigd heb. Zo is het voor mij niet te doen om een programma werkend te krijgen.

Ik krijg ook niets gevonden op internet, wat ik begrijp, om tekst vanuit de attiny naar een monitor te schrjiven, anders had ik nog een manier gehad om de variabelen uit te lezen die ik gebruik.

Als iemand nog enig idee heeft wat ik verkeerd doe hoor ik het graag.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: kloksnelheid attiny85

Berichtdoor nicoverduin » 14 Mrt 2014, 10:20

De ATTinies hebben heet hardware serial... Maar er bestaat wel iets als SoftwareSerial (goh hoe hadden ze het kunnen bedenken). En..... Dat werkt als een tierelier...

Boven in het programma":
Code: Alles selecteren
#define DEBUG
#ifdef DEBUG
#include <SoftwareSerial.h>   // send serial data over MISO pin (will switch transmitter off)
#endif

#ifdef DEBUG
#define SEND         5      // MISO is connected to switch pin
#define RECEIVE         3      // pin 6 is not used
#endif

#ifdef DEBUG
SoftwareSerial mySerial(RECEIVE, SEND);
#endif



in de setup:

Code: Alles selecteren
#ifdef DEBUG
     pinMode(RECEIVE,INPUT);
     pinMode(SEND,OUTPUT);
     mySerial.begin(9600);
     mySerial.println("Debug mode");
#endif


en waar je data wilt laten zien:

Code: Alles selecteren
#ifdef DEBUG
   mySerial.println("Raw Data");
   mySerial.print("X = ");
   mySerial.print(raw.XAxis);
   mySerial.print(" Y = ");
   mySerial.print(raw.YAxis);
   mySerial.print(" Z = ");
   mySerial.println(raw.ZAxis);
#endif


Ik heb deze library ook weer ergens vandaan (of aangepast :)) In ieder geval staan ze nu hier : https://github.com/nicoverduin/TinySoftwareSerial

Hij werkt in ieder geval op de tiny84.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: kloksnelheid attiny85

Berichtdoor ercmrj » 14 Mrt 2014, 12:18

Je verdient wel een oscar Nico, als ik zie hoeveel mensen je helpt op dit forum.

Maar ik heb nu onderstaand script geladen, en de ATtiny84 8MHz gekozen als board, maar zie niets op de serieële monitor, ook niet in processing daar verschijnt alleen "null" ???
Overigens krijg ik geen foutmeldingen, dat is al heel wat.

Is er nog een instelling die ik over het hoofd zie. Ik werk overigens bijna altijd met ubuntu (linux) maar weet niet of dat van invloed is.

Code: Alles selecteren
#define DEBUG
#ifdef DEBUG
#include <SoftwareSerial.h>   // send serial data over MISO pin (will switch transmitter off)
#endif

#ifdef DEBUG
#define SEND         5      // MISO is connected to switch pin
#define RECEIVE         3      // pin 6 is not used
#endif

#ifdef DEBUG
SoftwareSerial mySerial(RECEIVE, SEND);
#endif

int led = 6;

// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
  #ifdef DEBUG
     pinMode(RECEIVE,INPUT);
     pinMode(SEND,OUTPUT);
     mySerial.begin(9600);
     mySerial.println("Debug mode");
  #endif
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(100);               // wait for a second
  #ifdef DEBUG
   mySerial.println("test");
  #endif
}

VorigeVolgende

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 50 gasten