Skocz do zawartości

Arduino dla moich potrzeb Astro


rafalt73

Rekomendowane odpowiedzi

4 godziny temu, Pawcio napisał:

....z tego co widać na zdjęciu Twoje rezystory mają cztery paski więc nie jest tak źle,

A to nie są jakieś wirusy czy inne chorobotwórcze kosmiczne patogeny ?????

Patogen.jpg

  • Like 2

Serdecznie pozdrawiam i kryształowego nieba życzę - Jacek  ?
TS T APO 90/600 z TSFLAT2 + Samyang 135 f2 ED z QHY183C + AS 60/240 z RC IMX290M + Canon 550D - sadzane na ZEQ25GT + Nikon 12x50 EX do podglądania.

Odnośnik do komentarza
Udostępnij na innych stronach

2 godziny temu, MrOD napisał:

Tolerancjami aż tak bym się nie przejmował. Zastosowałem podobny kod jak rafał - uwzględnia dokładną rezystancje każdego z rezystorów. Można zmierzyć indywidualnie i w ten sposób rozwiązany jest problem.

100% racji! Proste rozwiązanie i najdokładniejsze bo bazuje na rzeczywistym pomiarze. Patrzenie na tolerancję rezystora nie ma wówczas znaczenia

 

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze pozostaje tolerancja napięcia 5V z regulatora w Arduino - to też jest tak +-5%. Jeśli nie korzystasz z rezystorów precyzyjnych i z zewnętrznych źródeł napięcia odniesienia, to najlepiej chyba po prostu zmierzyć multimetrem napięcie rzeczywiste i zakodować na stałe współczynnik w kodzie. Będzie on ważny tylko dla konkretnego urządzenia, ale pomiar będzie dokładny. 

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

No to jeszcze jedno Arduinowe pytanie, choć właściwie odnoszące się do kodu. Czy ma znaczenie miejsce zdefiniowania zmiennych - znaczenie z punktu widzenia pamięci? Czy lepiej jest raz zdefiniować wszystkie zmienne na początku kodu poza sekcjami void_setup i void_loop czy nie ma to znaczenie i definicję zmiennych można umieścić w poszczególnych procedurach? Umieszczenie ich w procedurach wprowadza porządek (wizualny) ale definicja i przypisanie będzie następowało za każdym razem wywołania funkcji.

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Kiedy definiujesz zmienne poza funkcjami to są to zmienne globalne - pamięć jest dla nich rezerwowana na początku i cały czas jest zajęta. Ale za to są dostępne w każdej dowolnej funkcji.
Zmienne definiowane wewnątrz funkcji to zmienne lokalne. Po wyjściu z funkcji pamięć zajęta przez te zmienne jest zwalniana i na nowo zajmowana po kolejnym wejściu do funkcji.

W praktyce lepiej patrzeć na to funkcjonalnie - definiować zmienne lokalne, kiedy to tylko możliwe. Jeśli potrzebujesz jakąś wartość w kolejnej funkcji, to lepiej ją przekazać jako argument przy wywołaniu. Zmienne globalne raczej deklarujemy w ostateczności :)

Przykładowo w Twoim kodzie:

  • przypisanie pinów powinieneś zrobić przez define: #define PIN_Voltage_measurement 0 - to nie zajmuje pamięci
  • Analog_V możesz zdefiniować jako lokalną w loop()
  • resztę zmiennych jako lokalne w VOLTAGE
  • Like 2

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

że tak zażartuję ;) sam odpowiesz sobie na pytanie, jak "ciut" więcej ten program będzie robił ;)

w zasadzie jeden pies, czy globalnie czy lokalnie zadeklarujesz, procesor i tak użyje pamięci (stosu, sterty) do przekazania wartości dalej

to co najważniejsze - lokalne - możesz mieć w różnych funkcjach zmienną o takiej samej nazwie (nawet różnych typach) i nie będą współdzielić wartości, globalne, niestety, już tak nie mają - zarówno typ i wartość są takie same dla wszystkich elementów programu

  • Like 2
Odnośnik do komentarza
Udostępnij na innych stronach

21 minut temu, MrOD napisał:

Jolo a ma to jakieś większe znaczenie? W sensie skoro np wiem że na moje wypociny pamięci jest aż nadto to czy faktycznie jest sens używać gdzie można lokalnych zmiennych?

W zasadzie ma to głównie znaczenie dla zachowania przejrzystości kodu, poza skrajnymi przypadkami :) Jak masz np w Arduino Uno 20 funkcji, z których każda potrzebuje 100 bajtów przestrzeni na zmienne, to jak będziesz je miał wszystkie globalne, to już nie dołożysz do kodu kolejnej podobnej. Ale to czysto teoretycznie, bo w praktyce tak jak pisze kolega amr dużo wcześniej zdecydujesz się na ulepszenie programu :) 

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki, poczytam. Do przerwań jeszcze nie dotarłem w tej podróży :)

Pytanko techniczne - jak tak naprawdę powinno mierzyć się napięcie czy prąd? Mierzyć to może trochę nieszczęśliwe określenie w tym przypadku, opisze więc może o co mi chodzi na przykładzie prądu.

Pomiar natężenia daje wartość w danej chwili a może być tak przecież że dosłownie parę ms wcześniej było dużo większe. Na ten moment wymyśliłem sobie że zrobię w każdym cyklu pętli loop() odczyt z czujnika (hallotron). Cykle pomiarowe wyznaczyłem sobie na 10s i w przeciągu każdego takiego cyklu zapisuje sobie pobór maksymalny i minimalny. Dane z arduino pobieram na zewnątrz i tak przy zapytaniu miałbym Imin, Imax oraz bieżące I. Patrząc na wykres czegoś takiego już mogę mieć lepszy pogląd na to co się działo. Taki sam algorytm zastosowałbym również do napięcia. Nie do końca jestem jednak przekonany do mojej koncepcji...

Odnośnik do komentarza
Udostępnij na innych stronach

Na takie tematy to już niejeden doktorat powstał :) Pierwszy z brzegu przykład - napięcie w gniazdku. Zmienia się cały czas od zera do 325V, a ktoś wymyślił i ustalił, że jest tam 230V :) 

Nie ma na to prostej odpowiedzi. Jeśli układ pobierający prąd stanowi obciążenie, które zmienia się w czasie, to musisz jakoś to uśredniać. Z drugiej strony, jeśli chcesz te zmiany jakoś śledzić, to nie możesz ich za bardzo uśredniać. W AstroHubie dokonuję na przykład pomiaru prądu pięć razy na sekundę, a jako wynik pokazywana jest średnia z pięciu ostatnich pomiarów. 

  • Like 1

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Zaczynam powoli montować układ i nabrałem wątpliwości:

  1. Czy przepuszczenie całego prądu (ok. 10A) przez ten maluteńki moduł ACS711 nie spowoduje nadmiernego spadku napięcia?
  2. Arduino chcę też zasilać 12V....ALE naładowany akumulator daje napięcie nawet 13.5 V, czy to nie uszkodzi mikrokontrolera? A może zastosować jakiś stabilizator liniowy???

a.jpg

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Spadek napięcia na czujniku będzie minimalny, on ma rezystancję rzędu jednego milioma. A napięcie, faktycznie, takie 13 i więcej woltów może spowodować grzanie się regulatora w Arduino. Wyjść jest kilka:

  • zastosować diodę zenera o nieco większej mocy, np 1.3W podłączoną w kierunku zaporowym szeregowo z plusem zasilania. Taka popularna na napięcie 3.3V będzie dobra.
  • zastosować regulator 7808 dający na wyjściu 8V i podpiąć go do wejścia RAW Arduino
  • zastosować regulator 7805 dający 5V i podpiąć do do wejścia 5V Arduino
  • Like 1

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

14 godzin temu, jolo napisał:

Spadek napięcia na czujniku będzie minimalny, on ma rezystancję rzędu jednego milioma. A napięcie, faktycznie, takie 13 i więcej woltów może spowodować grzanie się regulatora w Arduino. Wyjść jest kilka:

  • zastosować diodę zenera o nieco większej mocy, np 1.3W podłączoną w kierunku zaporowym szeregowo z plusem zasilania. Taka popularna na napięcie 3.3V będzie dobra.
  • zastosować regulator 7808 dający na wyjściu 8V i podpiąć go do wejścia RAW Arduino
  • zastosować regulator 7805 dający 5V i podpiąć do do wejścia 5V Arduino

Jolo, dzięki. Zastosowałem stabilizator liniowy 7805 z dwoma kondensatorami 100nF. Napięcie zostało obniżone z 12.5 do 5.06 z podłączeniem do PINu RAW. Cała reszta podzespołów zasilana jest już z PIN VCC. Jedynie wentylator chłodzenia zasilany jest bezpośrednio z 12V ale sterowanie ma poprzez tranzystor polowy IRLZ44N (tak jak sugerowałeś) przez wyjście PWM. Wszystko śmiga !!!! Jutro muszę dopisać trochę kodu i złożyć w obudowie...ale elektrycznie wszystko działa (wentylator na razie idzie z zadanej wartości PWM)

 1.JPG

2.JPG

  • Like 5

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Dnia 18.12.2016 at 00:58, rafalt73 napisał:

Jutro muszę dopisać trochę kodu i złożyć w obudowie...

he he..."muszę dopisać trochę kodu" - brzmi banalnie i prosto a od 3 dni nie jem, nie piję inie śpię :) No może trochę przesadzam ale to kodowanie daje mi w kość. Moje odkrycie i ewentualna rada jest następująca:

Jeśli ktoś chce wykorzystać moduły komunikacji radiowej ASK TX/RX to musi zwrócić uwagę na PIN'y do których podpina Nadajnik i Odbiornik. Otóż w bibliotekach z których można korzystać, np. VirtualWire lub RadioHead zaszyte są na stałe numery PIN'ów do podłączenia modułów!!! W przykładowych kodach (w necie) niby jest zmienna do której można przypisać dowolny PIN cyfrowy, ale nie dajcie się zwieść - no chyba że podepniecie nadajnik do D11 a odbiornik do PINu D12. To właśnie D11 i D12 zaszyte są w kodzie samej biblioteki. Straciłem 3 dni zanim na to wpadłem. Biblioteki można edytować w dowolnym edytorze tekstowym - trzeba tam wpisać numery swoich PINów...no i śmiga

 

  • Like 2

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Rafale, cóż to jest 3 dni wobec wieczności ...

Najważniejsze, że koniec końców dałeś radę i program działa według Twoich założeń ! A już super, że postanowiłeś podzielić się z nami Twoimi spostrzeżeniami i uwagami odnośnie numerów pinów zaszytych w bibliotekach - dzięki !

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

Pierwsza część projektu skończona. Dziękuję kolegom za wsparcie merytoryczne. Dla przypomnienia, moduł który zbudowałem ma być zainstalowany w skrzyni zasilanej akumulatorem, gdzie znajduje się komputer sterujący połączony z teleskopem (z tym komputerem łącze się zdalnie). A więc ów moduł ma za zadanie:

  • mierzyć napięcie akumulatora (monitoring stanu baterii)
  • mierzyć pobór prądu (monitoring stanu baterii)
  • sprawdzać parametry powietrza w skrzyni aby nie przegrzać komputera (za gorąco włącza/ wyłącza wentylator tłoczący powietrze, za wilgotno zatrzymuje wentylator)
  • przesyła drogą radiową zebrane dane
  • sygnalizuje diodami stan pracy wentylatora i przesyłu danych

4.JPG2.JPG

MCB_bb.jpg

/*
Battery Box Control - 15.12.2016
by Rafal73t - http://moje-nocne-niebo.blogspot.com/

 - Voltege and current (12VDC) monitoring
 - Temperature and Humidity monitoring
 - Control of fan for computer overheat prevention
 - Collecting parameters and data transmission by radio (433MHz transmitter)
 - Data presentation in the monitor of serial port. 
*/

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include "string.h"
#include <SPI.h>
#include <RH_ASK.h>
RH_ASK driver;

//-------------------------------------------------------PIN asignment-------------------------------------------------------
const int PIN_Voltage_measurement = A0;            //PIN A0 - analog PIN for voltage measurement by means of voltage devider
const int PIN_Current_measurement = A1;                  //PIN A1 - analog PIN for current measurement by means of ACS711 Module
const int PIN_Fan_control = 3;                          //PIN D3 - PWM digital PIN for cooling fan by means of transistor IRLZ44N
//const int PIN_TRX = 5;                                  //PIN D5 - digital PIN for radio transmitter WRITTEN IN LIBLARY!!!
const int PIN_LED_TRX_OK = 7;                           //PIN D7 - digital PIN for LED for OK transmition status 
const int PIN_LED_FAN = 8;                              //PIN D8 - digital PIN for LED for Cooling Fun Status
const int PIN_DHT = 12;                                 //PIN D12 - digital PIN for temperature / humidity measurement by means of DHT22 sensor


//-----------------------------------------------Global Variable and Definition -------------------------------------------------
#define DHTTYPE DHT22                          
DHT dht(PIN_DHT, DHTTYPE);
float H;                                            //Globa variable for Humidity value 
float T;                                            //Globa variable for Temperature value
float currentDewpoint;                              //Globa variable for Dewpoint value
float V_in;                                   //Globa variable voltage [V]
int Fan_Active;                                     //Status of the Fan with load information 0->STOP, 30 - 60 - 100 ->RUN
int Humidity_Index;                                  //Protection on = 1, Protection off = 0
double ACS_Amps = 0;


char T_table[6];                                    //Table for ASCII witch represents Temperature value
char H_table[6];                                    //Table for ASCII witch represents Humidity value
char DP_table[6];                                   //Table for ASCII witch represents Dewpoint value
char V_table[6];                                    //Table for ASCII witch represents Voltage value
char FA_table[4];                                   //Table for ASCII witch represents status of the fun
char HP_table[2];                                   //Table for ASCII witch represents status of the humidity protection ON -1 / OFF - 0
char ACS_table[4];                                  //Table for ASCII witch represents current value
char TXT_table[10];                                 //Table for global massage to be transitted 


void setup() {

  pinMode(PIN_Voltage_measurement, INPUT);         // I/O on the PINs deffinition
  pinMode(PIN_Fan_control, OUTPUT);                //Cooling Fan operation 
  pinMode(PIN_LED_FAN, OUTPUT);                    //status of the fan operation
  Serial.begin(9600);                              //Serial monitor activation 
  dht.begin();                                     //DHT22 sensor activation
  Fan_Active = 0.00;
  
 if (!driver.init())
         Serial.println("Transmitter initialization failed");
  }

void loop() {

  // Calling individual function and finaly transmission all data in separate packages
  VOLTAGE();                    
  AIR_CONDITION();              
  FAN_CONTROL(T, H);
  CURRENT();
  TRANSMISSION();
  delay(5000);
}

void VOLTAGE() {
/*
Simple function to measure Voltage and current at power source (battery 12VDC)
*/

  int Analog_V = 0;                                //Read an analog value
  float V_out = 0.0;                               //Voltage reading on the analog output [V]
  float R1 = 22000.0;                              //The resistance of the resistor R1 [ohm]
  float R2 = 10080.0;                              //The resistance of the resistor R2 [ohm]

  Analog_V = analogRead(PIN_Voltage_measurement);
  V_out = (Analog_V * 5.0) / 1024;
  V_in = V_out / (R2/(R1+R2));

       if (V_in<0.09) {                             //protection against undesired reading//
           V_in=0.0;
       } 
  }


void AIR_CONDITION() {

/* Simple function to read actual weather condition
Read Temperature and Himidity and calculate Dewpoint with NOAA function
*/
 
  H = dht.readHumidity();
 T = dht.readTemperature();
    
   currentDewpoint = dewPoint(T, H);                   //Calling DewPoint function
   if (isnan(T) || isnan(H)) {
    Serial.println("Failed to read from DHT");
  } 
}


// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm
//
double dewPoint(double celsius, double humidity)
{
	// (1) Saturation Vapor Pressure = ESGG(T)
	double RATIO = 373.15 / (273.15 + celsius);
	double RHS = -7.90298 * (RATIO - 1);
	RHS += 5.02808 * log10(RATIO);
	RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
	RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
	RHS += log10(1013.246);

        // factor -3 is to adjust units - Vapor Pressure SVP * humidity
	double VP = pow(10, RHS - 3) * humidity;

        // (2) DEWPOINT = F(Vapor Pressure)
	double Temp = log(VP/0.61078);   // temp var
	return (241.88 * Temp) / (17.558 - Temp);
}


void FAN_CONTROL(float Temperature, float Humidity) {

  /*
    The function FUN_CONTROL is to controll temperature inside main power box
    1. If temperature rise up to 25 deg cooling fan will be activated using PWM PIN 3 at 30% of its capacity
    2. If temperature rise up to 30 deg cooling fan will be activated using PWM PIN 3 at 60% of its capacity
    3. If temperature rise up to 35 deg cooling fan will be activated using PWM PIN 3 at 100% of its capacity
    In case of high humidity 70% cooling fun will be imidietly terminated
  */

if (Humidity > 70)
    {
     analogWrite(PIN_Fan_control, 0);
     Humidity_Index = 1;
     digitalWrite(PIN_LED_FAN, LOW);
     Fan_Active = 0.00;
     } 

else if (Humidity < 70 && Temperature < 25 )
    {
      analogWrite(PIN_Fan_control, 0);
      digitalWrite(PIN_LED_FAN, LOW);
      Fan_Active = 0.00;
      Humidity_Index = 0.00;
     }
    
    else if (Humidity < 70 && Temperature > 25 && Temperature < 30)
    {
      analogWrite(PIN_Fan_control, 90);
      Fan_Active = 30.00;
      Humidity_Index = 1.00;
      digitalWrite(PIN_LED_FAN, HIGH);
     }
    
else if (Humidity < 70 && Temperature > 30 && Temperature < 35)
    {
      analogWrite(PIN_Fan_control, 160);
      Fan_Active = 60.00;
      Humidity_Index = 1.00;
      digitalWrite(PIN_LED_FAN, HIGH);
     }
else if (Humidity < 70 && Temperature > 35)
    {
      analogWrite(PIN_Fan_control, 255);
      Fan_Active = 100.00;
     Humidity_Index = 1.00;
      digitalWrite(PIN_LED_FAN, HIGH);
    }
}


void CURRENT() {
  int ACS_mVperAmp = 66; 
  int ACS_RawValue= 0;
  int ACS_offset = 2500; 
  double ACS_Voltage = 0;

       ACS_RawValue = analogRead(PIN_Current_measurement);             //Read analog value from ACS711 signal
       ACS_Voltage = (ACS_RawValue / 1024.0) * 5000;                   // Gets mV
       ACS_Amps = ((ACS_Voltage - ACS_offset) / ACS_mVperAmp);         //Current calc.            
  }


void TRANSMISSION() {

/*
  1. Conversion parameters into individual tables
  2. Combaining parameters with index witch represents particular valu, 
      example: temperature 23.56 ==> T23.56 so receiver can easly identify what kind of value come
*/
  
    dtostrf(T, 5,2, T_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "T");
    strcat(TXT_table, T_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
    
    
    dtostrf(H, 5,2, H_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "H");
    strcat(TXT_table, H_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
        
        
    dtostrf(currentDewpoint, 3,2, DP_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "D");
    strcat(TXT_table, DP_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
    
    
    dtostrf(V_in, 5,2, V_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "V");
    strcat(TXT_table, V_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
    
    
    
    dtostrf(Fan_Active, 2,0, FA_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "F");
    strcat(TXT_table, FA_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
           
  
    dtostrf(Humidity_Index, 1,0, HP_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "P");
    strcat(TXT_table, HP_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);


    dtostrf(ACS_Amps, 4,2, ACS_table);
    TXT_table[0]='\0';
    strcat(TXT_table, "A");
    strcat(TXT_table, ACS_table);
    Serial.println(TXT_table);
    driver.send((uint8_t *)TXT_table, strlen(TXT_table));
    driver.waitPacketSent();
    delay(200);
   
}

 

 

  • Like 5

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

W Twoim kodzie przyjmujesz, ze napiecie zasilania to 5V.

  V_out = (Analog_V * 5.0) / 1024;

Czasem jednak moze sie przydac pomiar wartosci... napiecia zasilajacego, zwlaszcza jesli jest dla nas napieciem referencyjnym.

http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
www.instructables.com/id/Secret-Arduino-Voltmeter/

  • Like 1

Pozdrawiam
Radoslaw Ziomber
http://www.astrofizyka.info

Odnośnik do komentarza
Udostępnij na innych stronach

Święta skutecznie odciągnęły mnie od komputera a w międzyczasie otrzymałem na skrzynką sporo ciekawych komentarzy od Keram167 - za co bardzo dziękuję. Keram167 zwrócił uwagę na kilka rzeczy ale w szczególności na jeden zasadniczy błąd w schemacie - źle wrysowałem kondensatory 100nF. Tak jak to wrysowałem na schemacie w poście #48 czyli włączenie szeregowe powoduje że układ nie ma prawa działać. Poza tym wykorzystałem kondensatory polimerowe niespolaryzowane a na schemacie #48 są elektrolityczne (podłączenie z uwzględnieniem +/- ma zatem kluczowe znaczenie - to również zmieniłem). Kolor pomarańczowy to linie zasilania pierwotnego (przed i po stabilizatorze), kolor czerwony to zasilanie 5VDC z Arduino. Zamieszczam więc poprawiony schemat:

MCB_bb_rev1.jpg

Dnia 24.12.2016 at 01:35, r.ziomber napisał:

Czasem jednak moze sie przydac pomiar wartosci... napiecia zasilajacego, zwlaszcza jesli jest dla nas napieciem referencyjnym.

Dzięki też za tą podpowiedź. Muszę to "przegryźć" i zrozumieć

  • Like 1

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, rafalt73 napisał:

Dzięki też za tą podpowiedź. Muszę to "przegryźć" i zrozumieć

W wielkim skrocie. Napiecie referencyjne powinno byc wyzsze od napiecia mierzonego. Mikrokontroler w Arduino ma wbudowane zrodlo napiecia odniesienia 1.1V. Podany kod zrodlowy mierzy je, ustalajac za referencje napiecie zasilania. Wiedzac, ze powinno wyjsc 1.1V, wylicza napiecie zasilania.

Pseudooscyloskop na wykresie w Arduino IDE

  • Like 1

Pozdrawiam
Radoslaw Ziomber
http://www.astrofizyka.info

Odnośnik do komentarza
Udostępnij na innych stronach

a przy okazji podzielę się swoją pracą nad drugą częścią projektu. Moduł pomiarowy prądu i innych parametrów skrzynki z komputerem już ukończony - teraz pracuję nad pudełkiem do montażu na teleskopie. Pudełko ma sterować grzałkami, zasilaniem, będzie miało w sobie hub USB + pomiar temperatury, wilgotności i takie tam. To ciągle w ramach nauki :)

Na razie wizualizacja parametrów przesyłanych drogą radiową

IMG_0908.JPG

  • Like 6

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Rafał, czapy z głów. Szturmem wziąłeś Arduino i wyraźnie wkraczasz na zaawansowane obszary. Czy to obudowa Z112A ? [emoji4] 

Oki, posprzątam zaraz. 

Dokładnie tak, długo szukałem aż w końcu doczytałem w Twoich postach co wykorzystałeś. W ogóle korzystałem z Twoich tutoriali + internet. Ardjino to super sprawa :)

Wysłane z iPhone za pomocą Tapatalk

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Koledzy, krótkie pytanie odnośnie uziemień przy różnych napięciach (nie chcę czegoś spalić). Mam zasilanie 11.5 - 12.5 VDC z którego zasilać będę dwie przetwornice i wyjścia PWM. Z przetwornicy step-down (5VDC) podciągnę zasilanie do Arduino, LCD oraz HUB'a USB. Proszę zerknijcie na schemat i potwierdźcie czy uziemienie gniazda PWM ma iść do szyny 12VDC? Sygnał sterujący tranzystorem będzie przychodził z Arduino 5VDC. Czy ma znaczenie że sygnał sterujący przyjdzie z linii 5V do obsługi układu 12V?

s.JPG

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Masy (czyli GND) powinny być wspólne  - podejrzewam, że w tej przetwornicy STEP-DOWN 5V którą stosujesz minus wejścia jest połączony z minusem na wyjściu (i tak musi być). Jedynie wtedy sygnał 5V z Arduino podany na tranzystor PWM spowoduje jego włączenie. Czyli - żeby tranzystor PWM zadziałał, to przede wszystkim jego źródło musi być podłączone do masy Arduino, a ponieważ ta masa jest spięta z masą wejściowego napięcia 12V, więc również z tym minusem. Fizycznie najlepiej mieć jakiś punkt w urządzeniu, gdzie masy są ze sobą połączone (np jakiś wspólny zacisk, szyna, albo coś podobnego). W przypadku Twojego pudełka powinny tam być podłączone minusy:

  • gniazd wejściowych i wyjściowych zasilania
  • przetwornic step up i step down
  • tranzystorów mocy PWM
  • zasilania Arduino i zasilania huba USB

 

  • Like 1

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Na rysunku masz schemat podłączeń PWM ( na HEXFET-ach IRFZ44N ) jaki zastosowałem w moim A-BOX-ie A-BOX.jpg( więcej w poście ID:251,
http://www.forumastronomiczne.pl/index.php?/topic/6506-szyte-na-miarę-astropudełko-na-arduino/&page=9

Dodatkowo załączam instrukcję AstroHuba 3.0 - na ostatniej stronie jest schemat, gdzie też są rozrysowane wyjścia PWM - tutaj są użyte IRLZ44N.

Astrohub 3 INSTRUKCJA-v.1.02.pdf

  • Like 2
Odnośnik do komentarza
Udostępnij na innych stronach

2 godziny temu, keram167 napisał:

Na rysunku masz schemat podłączeń PWM ( na HEXFET-ach IRFZ44N ) jaki zastosowałem w moim A-BOX-ie więcej w poście ID:251,
...

Keram167, piękny schemat - czytelny, przejrzysty i profesjonalny. Faktycznie widzę że wszystkie masy (GND) są połączone. Muszę przyznać że kompletnie tego nie rozumiem i nie mogę sobie tego poukładać (może po prostu potrzebuję trochę czasu), ale przyjmuję za pewnik od doświadczonych Kolegów. No i cały czas nie rozumiem po co te kondensatory pomiędzy zasilaniem i masą (widziałem też takie rozwiązania w necie). Nie wykluczone, że pokutują tu moje przyzwyczajenia zawodowe - jestem chemikiem procesowym i czasem prąd traktuję jak np. wodę pod różnym ciśnieniem, rezystory to zawory ograniczające przepływ a kondensatory to poprostu kompensatory ciśnienia :) Takie skojarzenie zawodowe

Jolo, Keram167 dzięki za podpowiedzi

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Rafale, w wolnej chwili możesz zerknąć na http://forbot.pl/blog/artykuly/podstawy/kurs-elektroniki-4-kondensatory-id4236 . Sugeruję również obejrzenie zamieszczonego na tej stronie filmu, pokazującego co się dzieje z "elektrolitem" podpiętym odwrotnie do zasilania - to już tak akonto Sylwestrowych fajerwerków ! Mi kiedyś taki źle podłączony kondensator wystrzelił i zrobił dziurę w sufitowym kasetonie styropianowym - siła jest więc naprawdę znaczna i trzeba zachować ostrożność podczas uruchamiania prototypowych układów !!!

Marek

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

4 godziny temu, keram167 napisał:

Rafale, w wolnej chwili możesz zerknąć na http://forbot.pl/blog/artykuly/podstawy/kurs-elektroniki-4-kondensatory-id4236 . Sugeruję również obejrzenie zamieszczonego na tej stronie filmu, pokazującego co się dzieje z "elektrolitem" podpiętym odwrotnie do zasilania - to już tak akonto Sylwestrowych fajerwerków ! Mi kiedyś taki źle podłączony kondensator wystrzelił i zrobił dziurę w sufitowym kasetonie styropianowym - siła jest więc naprawdę znaczna i trzeba zachować ostrożność podczas uruchamiania prototypowych układów !!!

Marek

Bardzo fajny materiał. Przeleciałem przez podstawowy kurs Arduino (też na tej stronie) to teraz przerobie podstawy elektroniki. Pewnie od tego powinienem zacząć, ale nauka lepiej mi idzie jak najpierw natknę się na problem, wówczas wiem przynajmniej o co pytać i czego szukać. Dzięki!

TSAPO 140/910 +QHY268M + QHYCFW3 & William Optics Guidestar 61 APO + ASI178MM

iOptron CEM70EC-NUC,  Astronomic 36mm: CLSCCD ,RGB, Ha, OIII, SII, pro planet IR742

https://moje-nocne-niebo.pl   

YouTube - Moje Nocne Niebo

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.

© Robert Twarogal * forumastronomiczne.pl * (2010-2023)