Przejdź do głównej zawartości

Paddle update 01.09.2020

Już jest pierwsza wersja PCB :-)





 

Ostatnia wersja kodu:

//ADS1115 - with calibration

#include <tinysnore.h>

#include<ADS1115_WE.h> //liba was edited to give raw data instead of mV

#include<Wire.h>

#include <EEPROM.h>

#define I2C_ADDRESS_1 0x48

#define I2C_ADDRESS_2 0x49

ADS1115_WE adc(I2C_ADDRESS_1);

ADS1115_WE adc2(I2C_ADDRESS_2);


int result = 0;

int result2 = 0;

int led = 1; //1 - Trinket, 13 - Arduino

int sensitivity;

int sensitivityNow;

int leftNow;    

int rightNow;

int leftOn;      //left paddle treshold

int leftOnAbs;   //left paddle absolute value treshold 

int leftOff;     //left paddle off treshold

int rightOn;     //right paddle treshold 

int rightOnAbs;   //right paddle absolute value treshold 

int rightOff;   //right paddle off treshold

int hysteresis = 7; //hysteresis

int configMode = 0;

int time1;  //time for setup mode purpose

int time2;  //time for setup mode purpose


void setup() {


  pinMode(led, OUTPUT); 

  Wire.begin();


  

  while(!adc2.init()){

        blink(20);

        delay(500);

  }


  while(!adc.init()){

        blink(40);

        delay(500);

  }


  EEPROM.get(0,sensitivity);

  EEPROM.get(2,leftOn);  

  EEPROM.get(4,leftOff);  

  EEPROM.get(6,rightOn); 

  EEPROM.get(8,rightOff); 

  


  

  adc.setVoltageRange_mV(ADS1115_RANGE_0256); //amplifier gain

  adc.setCompareChannels(ADS1115_COMP_0_1); //differential measurement

  adc.setConvRate(ADS1115_860_SPS); //samples pre second 

  adc.setMeasureMode(ADS1115_CONTINUOUS); //Continous mode

  adc.setAlertPinMode(ADS1115_ASSERT_AFTER_1); //after how many measurments ALRT output is set

  adc.setAlertModeAndLimit_V(ADS1115_MAX_LIMIT, leftOn, leftOff); //Comparator values Hightreshold then LowTreshold 

  adc.setAlertPol(ADS1115_ACT_HIGH); //ALRT polarity


  adc2.setVoltageRange_mV(ADS1115_RANGE_0256); //amplifier gain

  adc2.setCompareChannels(ADS1115_COMP_0_1); //differential measurement

  adc2.setConvRate(ADS1115_860_SPS); //samples pre second 

  adc2.setMeasureMode(ADS1115_CONTINUOUS); //Continous mode

  adc2.setAlertPinMode(ADS1115_ASSERT_AFTER_1); //after how many measurments ALRT output is set

  adc2.setAlertModeAndLimit_V(ADS1115_MAX_LIMIT, rightOn, rightOff); //Comparator values Hightreshold then LowTreshold 

  adc2.setAlertPol(ADS1115_ACT_HIGH); //ALRT polarity

  

  result = adc.getResult_mV(); 

  result2 = adc2.getResult_mV();

  if ((result > 20) && (result2 > 20)){

    configMode = 1;

    time1 = millis();

    }


}


void loop() {

  if (configMode){

  config_loop();

  }

  else {

  main_loop();

  }

}


void main_loop() {

  //snore lib for ATTINY85 - uC to sleep mode

snore(10000);


}


  


void config_loop(){

  

  

  result = adc.getResult_mV(); 

  result2 = adc2.getResult_mV();

  time2 = millis(); 


//autocalibration

leftOn = result + sensitivity;  //measure free state and do the calibration 

      if (leftOn >= 0){

        leftOff = leftOn - hysteresis;

        }

        else {

          leftOnAbs = abs(leftOn);

          leftOff = -hysteresis - leftOnAbs;

          }

        rightOn = result2 + sensitivity;

       if (rightOn >= 0){

        rightOff = rightOn - hysteresis;

        }

        else {

          rightOnAbs = abs(rightOn);

          rightOff = -hysteresis - rightOnAbs;

          }  


//exit after 10s and write sensitivity

  if ((time2-time1)>10000){

      blink(sensitivity);

 

      EEPROM.put(0,sensitivity);   //store sensitivity permanent when leaving

      EEPROM.put(2,leftOn);  

      EEPROM.put(4,leftOff);  

      EEPROM.put(6,rightOn); 

      EEPROM.put(8,rightOff); 

      

      adc.setAlertModeAndLimit_V(ADS1115_MAX_LIMIT, leftOn, leftOff);

      adc2.setAlertModeAndLimit_V(ADS1115_MAX_LIMIT, rightOn, rightOff);

      configMode = 0;

    }


//set paddle status

  if ((result > 20) && (leftNow == 0)) {

   leftNow = 1;

   sensitivity = sensitivity + 10;

   }

  if (result < 10) {

   leftNow = 0;

  }

  if ((result2 > 20) && (rightNow == 0)) {

   rightNow = 1;

   sensitivity = sensitivity - 10;

   }

   if (result2 < 10) {

   rightNow = 0;

  }

//set sensitivity

if (sensitivity != sensitivityNow)

  switch (sensitivity){

      case 0:

      sensitivity = 10;

      time1 = millis();

      break;

    case 10:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 20:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 30:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 40:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 50:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 60:

      sensitivityNow = sensitivity;

      blink(sensitivityNow);

      time1 = millis();

      break;

    case 70:

      sensitivity = 60;

      time1 = millis();

      break;

    default:

      sensitivity = 10;

      time1 = millis();

      break;

    }  

}




void blink(int amount){

      for(int x = 0; x < amount; x = x+10){

      digitalWrite(led, HIGH);

      delay(50);

      digitalWrite(led, LOW);

      delay(200);

      }

    

  } 

Komentarze

Popularne posty z tego bloga

T2FD

Zmierzyłem się w końcu z demonizowaną przez wszystkich anteną T2FD, ale zacznijmy od początku. Antena ta zostałą opracowana na użytek wojska przez United States Navy pod koniec lat 40-tych. Antena ta charakteryzuje się szerokopasmowością (1:6) oraz dużą odpornością na zakłócenia. Z tego też względu w końcowym efekcie pozostano jedynie przy tej antenie. Pierwszy raz w prasie radioamatorskiej została opisana przez W3HH w QST w 1949 r., przez co często znana jest jako "antena W3HH". Zapomniana na wiele lat, powróciła do łask na początku lat 80-tych . Nie każdy ma możliwość zainstalowania całego pola antenowego, najbardziej odczuwają to krótkofalowcy z dużych miast. Dochodzi do tego także smog elektroniczny jaki nas otacza, co potęguje napływ tanich urządzeń elektronicznych z wytanionymi przetwornicami generującymi śmieci w prawie całym widmie fal krótkich. Ze względu na moją lokalizację która pozwala mi na montaż anteny jedynie w obrębie dachu budynku padło na T2FD. Antena

Metal Clip CW Paddle

Oto kolejny mini projekt kieszonkowego klucza, który można zrobić z dosłownie kilku elementów znalezionych w szufladzie. Zainspirowało mnie do jego zrobienia materiał znaleziony w sieci na stronie K9LU LINK  gdzie klucz ten znany jest jako Bulldog. Wykonanie tego klucza jest bardzo proste, potrzebujemy parę elementów : Guziki metalowe - dające się lutować 2szt  Spinacz do papieru 1 szt Klips do papieru 1 szt Element nośny (brak na zdjęciu), w moim przypadku był to plastikowy przycisk Magnes neodymowy z otworem na śrubę (lub podstawa do której przymocujemy łopatki) Śrubki 2 szt. Kawałek laminatu (brak na zdjęciu) Na początek musimy spreparować metalowy klips. Wycięcia na klipsie powodują że uchwyty cofają się w stronę klipsa. Musimy je spiłować tak by uchwyt był wypychany na zewnątrz, im bardziej spiłujemy krawędzie i kąt będzie bardziej rozwarty, tym łopatki będą bardzie twarde, proponuję przygotować kilka klipsów gdyż jest duże prawdopodobień

Kopia anteny CHA-250B (VA250,HA-750B,FALCON OUT-250-B) w wersji QRP

W przypadku pracy terenowej gdzie często składamy i rozkładamy nasz sprzęt, potrzebne jest rozwiązanie kompromisowe. Takim na pewno jest komercyjny produkt firmy Comet CHA-250B. Spotkałem się już wcześniej z tą anteną w wersji fabrycznej i byłem zaskoczony pomiarami WFS, który to zachowywał się równomiernie w zadeklarowanym przez producenta zakresie częstotliwości. Opis anteny oraz opinie o niej możemy znaleźć na stronie producenta http://www.cometantenna.com/ oraz na eHam.net . Szukając opisu tej anteny natknąłem się na stronę Martina G8JNJ. Przeprowadził on wiele eksperymentów z tą anteną, oraz dokładnie opisał sposób wykonania transformatora dopasowującego. Opis wraz ze zdjęciami możemy znaleźć na jego stronie: http://g8jnj.webs.com/cometcha250b.htm . Antena jest prosta w odwzorowaniu, a rdzenie zalecane przez autora również są dostępne, można je znaleźć pod adresem http://pl.farnell.com/ za niecałe 11zł za sztukę (gdyby ktoś postanowił odwzorować antenę w wersji QRO). Ja m