-
Постов
108 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные xopkep
-
-
Прощу прощения за ввод в заблуждение
50В/7A и 24В/3А - это регулируемые БП. Я лишь хотел сказать, что мощщей для раскрутки было с запасом. Земли БП, разумеется объеденял. Диск будет работать не в компе, а отдельном девайсе - там будет только 5В/5А БП и степ-ап.
0 -
Здравствуйте,
Имею старый SATA HDD. На корпусе - 12/5V 0.7/0.5A. На другом новом 0.5А по 12 и 5в. Собрал питание с 5В БП (на 5А, импульсный) и преобразователя step-up на LM2587 на 12В - не заводится. Потребление прыгает до 0.8А, диск щелкает, но не раскручивается.
Попробовал запитать напрямую от двух БП (50В/7A и 24В/3А оба трансформаторные) - не заводится. Ситуация такая же - диск щелкает, потребление по 5В до 600-800мА при щелчке (по 12В до 100мА), шпиндель не раскручивается.
От компа оба диска заводятся без проблем.
Что я делаю не так, подскажите пожалуйста.
С Уважением,
0 -
Подскажите пожалуйста, по такому вопросу:
Собираю драйвера на pt4115 по типовой схеме из даташита. Даже дроссели - рекомендуемые коилкрафтовские по даташиту. На выходе 10Вт светодиоды 10В 1А. В итоге имеем очень неслабый нагрев дросселя при выходном токе 0.6-0.7А и напряжении на входе не более 11В. Если повышать напряжение (требуемое на входе - 13В) - происходит срыв генерации - дроссель пищит и выходной ток падает до ~0.3А.
В чем проблема?
0 -
Я никуда не тороплюсь и собирать прочие гадости не собираюсь
Ну а начну разумеется с двух-трех штук.
Что-то я не вникну в суть БАМа...
0 -
Не угадали
Про ШИМ слышал и лампу настроения делал. Но там просто. Управлять-то одним-тремя. А тут 4-24. И зажечь на интервале в примере - это получается...
в первую секунду включаем порт первого общего и порты сегментов BrCr и одновременно ШИМ\БАМ BgCg скважностью 50%. Так чтоли?. чейт тяжко идет...
0 -
Здравия желаю, дамы и господа. Прошу внимания
Динамическая индикация для не профи выглядит так:
A B C D E F G H
1 0 1 1 0 0 0 0 0
2 1 1 0 1 1 0 1 1
3 1 0 1 1 0 1 1 0
4 0 1 1 0 0 1 1 0
(пример на пальцах) На проход 4секунды.
Т.е. в первую секунду включаем порт первого общего и порты сегментов BC.
Во вторую секунду выключаем порт первого общего, включаем порт второго общего и порты ABDEGH
Итпитд.
Для видимых одновременно всех четырех цифр, частота включения/выключения одного разряда не должна быть менее 50раз/секунду.
Лучше больше.
Имеем 12.54
Теперь вопрос\просьба: расскажите\покажите пожалуйста таким же образом (на пальцах) динамическую индикацию на RGB светодиодах со смешиванием цветов.
Если зажечь один\два\три цвета одновременно не представляется проблемой (на каждый цвет - свой порт МК = 8 сегментов * 3 цвета = 24 порта сегментов цветов и 4 общих для разрядов), то вот с переменной яркостью - ну вообще нифига неясно.
Ну не могу я даже представить, как в таком случае зажечь например одновременно три цвета RGB но яркостью 100%,50%,25% или 25%,100%,25% или 25%,25%,25%
Прошу разжевать
С Уважением,
p.s. и хватит ли скоростей простых мк типа stm8 или avr для этого? а скорости включения\выключения самих диодов?
0 -
Проблема в питании, в преобразователе 5В->3В. Поменял. Вроде работает.
0 -
Путем писания пятой точкой, сообразил такую версию кода:
#include <Wire.h> // Common library #include "DHT.h" // DHT11 & DHT22 Library #include "af_BMP085.h" // Simple library for BMP085 #include <EtherCard.h> // ENC28J60 Library #include <LiquidCrystal_I2C.h> // Display with PFC8574 // BMP085: SDA->A4 / SCL->A5 // DHT11: DATA->A0 // DHT22: DATA->A1 // JACK: DATA->D4 // DISPLAY-I2C: SDA->A4 SCL->A5 BACKLIGHT->D5 // ENC28J60: SCK->D13 MOSI->D12 MISO->D11 INT->D2 RST->RST CS->D10 // ISP: SCK->D13 MOSI->D12 MISO->D11 RST->RST // DIODE GREEN: + -> D8 // DIODE ORANGE: + -> D7 // BUZZER: SIGNAL -> D9 // ANEMOMETER -> D3 (INT1) // Setting vars //#define BACKLIGHT_PIN 5 // Display backlight with npn-transistor #define DHT_S1_PIN A1 // DHT22 / AM2302 #define DHT_S2_PIN A0 // DHT11 //#define D_ORANGE_PIN 7 // Diode orange //#define D_GREEN_PIN 8 // Diode green //#define BUZZER_PIN 9 // Buzzer //#define WIND_PIN 3 // Anemometer //uint8_t wind[8] = {B11000,B00011,B00100,B11000,B00011,B00100,B11000}; //ветер uint8_t home[8] = {B00100,B01010,B11111,B10001,B10101,B10001,B11111}; //домик uint8_t sun[8] = {B00100,B10101,B01110,B11011,B01110,B10101,B00100}; //солнышко uint8_t mmhg[8] = {B01110,B01110,B01110,B01110,B11111,B01110,B00100}; //давление uint8_t temp_w_cel[8] = {B00011,B00011,B01100,B10010,B10000,B10010,B01100}; //ц с градусом uint8_t hum[8] = {B00000,B00100,B01010,B01010,B10001,B11111,B01110}; //влажность short int humidity = 0, temp_dht = 0, humidity2 = 0, temp_dht2 = 0, temp = 0;//temp_bmp = 0, static uint8_t mymac[6] = { ххх }; LiquidCrystal_I2C lcd(0x20,4,5,6,0,1,2,3,7, POSITIVE); const char website[12] = "narodmon.ru"; static byte hisip[] = { 94, 19, 113, 221 }; static byte dnsip[] = {8, 8, 8, 8}; int32_t pressure_pa = 0, pressure_mm = 0; volatile byte half_revolutions = 0; byte Ethernet::buffer[500]; float tavgwspeed = 0; float avgwspeed = 0; //unsigned int avgrpm=0; float wspeed=0; short int taws = 0; Adafruit_BMP085 bmp; dht dht_s1, dht_s2; Stash stash; unsigned long DisplayTime; unsigned long lDisplayTime; unsigned long NMTime; unsigned long lNMTime; unsigned long AnemoTime; unsigned long lAnemoTime; unsigned long ResetTime; unsigned long lResetTime; void(* resetFunc) (void) = 0; void setup() { // LCD pinMode(5, INPUT); // set pin to input digitalWrite(5, HIGH); // turn on pullup resistors lcd.home(); lcd.begin(24,2); // lcd.createChar(0, wind); lcd.createChar(1, home); lcd.createChar(2, sun); lcd.createChar(3, mmhg); lcd.createChar(4, temp_w_cel); lcd.createChar(5, hum); lcd.setCursor(0,0); lcd.print("[Online Meteostation v3]"); delay(3000); lcd.clear(); // ETHERNET if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0) { lcd.setCursor(0,0); lcd.print("ETH ERR"); } else { lcd.setCursor(0,0); lcd.print("ETH OK"); } if (!ether.dhcpSetup()) { lcd.setCursor(8,0); lcd.print("DHCP ERR"); } else { lcd.setCursor(8,0); lcd.print("DHCP OK"); } ether.copyIp(ether.dnsip, dnsip); ether.copyIp(ether.hisip, hisip); /* if (!ether.dnsLookup(website)){ lcd.setCursor(17,0); lcd.print("DNS ERR"); } else { lcd.setCursor(17,0); lcd.print("DNS OK"); }*/ while (ether.clientWaitingGw()) { ether.packetLoop(ether.packetReceive()); lcd.setCursor(0,1); lcd.print("GW OK"); } delay(4000); lcd.clear(); // BMP085 bmp.begin(); // Narodmon.ru Update nm_upd(); // Display Update DisplayTotal(); // 600000 - 10 min // 60000 - min // 1000 - sec // 100 - millisec // 10 - microsec // 1 sec = 1000ms = 1000000uS attachInterrupt(1, rpm_fun, FALLING); DisplayTime = millis(); // считываем время, прошедшее с момента запуска программы NMTime = millis(); AnemoTime = millis(); ResetTime = millis(); lDisplayTime = DisplayTime; lNMTime = NMTime; lAnemoTime = AnemoTime; lResetTime = ResetTime; } void loop() { DisplayTime = millis(); // считываем время, прошедшее с момента запуска программы if(DisplayTime >= (lDisplayTime + 60000)){ // сравниваем текущий таймер с переменной lDisplayTime + 60 секунд DisplayTotal(); // включаем/выключаем LED lDisplayTime = DisplayTime; // в loopTime записываем новое значение } NMTime = millis(); // считываем время, прошедшее с момента запуска программы if(NMTime >= (lNMTime + 300000)){ // сравниваем текущий таймер с переменной lDisplayTime + 300 секунд nm_upd(); // включаем/выключаем LED lNMTime = NMTime; // в loopTime записываем новое значение } AnemoTime = millis(); // считываем время, прошедшее с момента запуска программы if(AnemoTime >= (lAnemoTime + 60000)){ // сравниваем текущий таймер с переменной lDisplayTime + 60 секунд anemometer(); // включаем/выключаем LED lAnemoTime = AnemoTime; // в loopTime записываем новое значение } ResetTime = millis(); // считываем время, прошедшее с момента запуска программы if(ResetTime >= (lResetTime + 86400000)){ // сравниваем текущий таймер с переменной lDisplayTime + 60 секунд resetFunc(); lResetTime = ResetTime; // в loopTime записываем новое значение } // Ethernet ping answer ether.packetLoop(ether.packetReceive()); } // Narodmon.ru Update void nm_upd(){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Now updating narodmon.ru"); MS_BMP085(); MS_DHT11(); // MS_DHT22(); byte sd = stash.create(); stash.println("ID=ххх"); stash.println("&ххх="); stash.println(temp_dht); stash.println("&ххх="); stash.println(humidity); stash.println("&ххх="); stash.println(pressure_mm); stash.save(); Stash::prepare(PSTR("POST http://narodmon.ru/post.php HTTP/1.0" "\r\n" "Host: narodmon.ru" "\r\n" "Content-Length: $D" "\r\n" "\r\n" "$H"), stash.size(), sd); ether.tcpSend(); stash.cleanup(); delay(3000); lcd.clear(); DisplayTotal(); } // Main display view void DisplayTotal() { MS_SensUpdate(); lcd.clear(); lcd.setCursor(0,0); lcd.write(byte(2));//sun lcd.setCursor(3,0); lcd.write(byte(3));//mmhg lcd.print(pressure_mm); lcd.setCursor(9,0); lcd.write(byte(5));//hum if ( humidity == 0 ) { lcd.print(" "); } lcd.print(humidity); if (temp_dht == 0) { lcd.print(" "); } else if (temp_dht <= 9) { lcd.print(" +"); } else if (temp_dht >= 10) { lcd.print(" +"); }; lcd.print(temp_dht); lcd.write(byte(4));//cel lcd.print(" "); lcd.setCursor(20,0); // lcd.write(byte(0));//wind lcd.print("W"); lcd.print(wspeed); lcd.setCursor(0,1); lcd.write(byte(1));//home lcd.print(" "); lcd.write(byte(3));//mmhg lcd.print(pressure_mm); lcd.print(" "); lcd.write(byte(5));//hum lcd.print(humidity2); if ( temp_dht2 >= 1 ) { lcd.print(" +"); } else if (temp_dht2 == 0) { lcd.print(" "); } else if (temp_dht2 >= 10) { lcd.print(" +"); }; lcd.print(temp_dht2); lcd.write(byte(4));//cel lcd.setCursor(20,1); lcd.print("W"); // lcd.write(byte(0));//wind lcd.print(avgwspeed); /* [s][ ][-][>][ ][p][7][4][5][ ][ ][h][6][0][ ][+][2][5][c*][ ][ ][ w][2][6] [H][ ][-][>][ ][p][7][4][5][ ][ ][h][4][5][ ][+][2][3][c*][ ][+][2][3][c*] Total: 24x02 */ } // Sensors // Update all sensors one time void MS_SensUpdate() { MS_BMP085(); MS_DHT22(); MS_DHT11(); } // Update only BMP085 void MS_BMP085() { // temp_bmp = bmp.readTemperature(); pressure_pa = bmp.readPressure(); pressure_mm = pressure_pa/133.3; } // Update only DHT22 void MS_DHT22() { if (dht_s1.read22(DHT_S1_PIN) == DHTLIB_OK) { humidity = dht_s1.humidity; temp_dht = dht_s1.temperature; temp = temp_dht; } else { temp = temp_dht; } } // Update only DHT11 void MS_DHT11() { if (dht_s2.read11(DHT_S2_PIN) == DHTLIB_OK) { humidity2 = dht_s2.humidity; temp_dht2 = dht_s2.temperature; temp = temp_dht2; } else { temp = temp_dht2; } } void rpm_fun() { half_revolutions++; } void anemometer(){ wspeed = half_revolutions * 0.60288; // метров в минуту wspeed = wspeed / 60; // метров в секунду if (taws == 10){ avgwspeed = tavgwspeed / 10; // средняя скорость tavgwspeed = 0; taws = 0; } else if (taws <= 9) { tavgwspeed = tavgwspeed + wspeed; // накапливание taws++; } else if (taws >= 11) { taws = 0; } half_revolutions = 0; }
Оно все работает, при условии, что подключен USBasp и он (USBasp) воткнут в усб компьютера. При отсутствии программатора происходит следующее: Запуск - Езернет инит - отправка данных на народмон - вывод на дисплей - всё, тут всё виснет. Т.е. отображаются данные на момент вывода и не происходит более ни отправки ни обновления на дисплее.
Что делать, чтобы не зависало без программатора?
Добавлю. Если убрать код анемометра целиком (прерывания и обсчет и вывод) - зависает реже (а может и не зависнуть). В чем ошибка?
0 -
Давай-те для начала сузим круг поиска проблемы. У Вас не получается принять данные с датчика по Уарт или выплюнуть принятые данные в юсб ?
А говорите что поняли.
Мне же надо отправить данные в USB->Virtual COM и это не работает.
я пробовал так
ptr = (PSTR("%d"), temperature);
и вот так
out_char( temperature )
В первом случае имеем просто пробел, во втором вообще ничего.
Вы хотите что-бы кто-то из форумчан скачал ваш код, переписал и отдал вам готовое.
Это было бы идеально. Например если в моих силах сделать такое - я сделаю. Но почему-то на форумах все жмутся и пытаются "заставить думать". Учителя блин
0 -
Это вы не поняли
CDC-IO - подключается к ПК посредством USB и представляется на компе в виде виртуального COM-порта. С железным UART мк никак не связан.
Код датчика, представленный на немецком сайте, отсылает данные в железный UART (serial) - и это работает. Мне же надо отправить данные в USB->Virtual COM и это не работает.
0 -
Это есть понимать, что код, представленный на сайте, отсылает данные в уарт.
А не получается послать его не в уарт, а в.... эээ... усб-ком.
0 -
Использую AVR Studio 4. В качестве подопытного - Arduino Pro Mini 5V/16MHz и BMP085. Пытаюсь отправить данные - не получается.
Отдельно CDC-IO шлет данные. Отдельно код датчика BMP085 шлет данные в UART. А вместе - не получается никак.
"Основано" на оригинальном CDC-IO
Код для датчика взят здесь
Подскажите пожалуйста, как поправить код, чтобы на ПК в терминале я получал данные датчика.
Код в прилагаемом архиве
С Уважением.
0 -
Закомментировал секцию. Вписал вместо оной:
rx_buf[0]='A';
rx_buf[1]='B';
rx_buf[2]='C';
В итоге - ничего не получил.
0 -
Там только разводка и небольшие пояснения по сему девайсу. В моем случае проблема в плохом знании языка программирования.
Пробовал сам сделать то, о чем написал - но никак. Никак не могу понять что и как в коде
0 -
Здравия желаю,
Вот тут есть проект CDC-232 для Atmega8/48/88.
Прошу небольшой помощи-подсказки. Приведите пожалуйста пример, как в этом коде, сделать нечто типа
adc=readadc1; sendport("ADC: "); sendport(adc);
Чтобы подключившись на компе к ком-порту, я мог прочитать в терминале ADC: 1234
С Уважением,
0 -
*atmega328
вот типа такого надо. Но под мегу. https://mbed.org/handbook/SerialPC
0 -
Здравия желаю,
Нашел такие, где атмега в качестве преобразователя аки FT232/CP210x, но надо другое.
Необходимо, чтобы при включении в USB, система видела устройство как простой COM-порт и обходилась _стандартными_ драйверами. Оно для метеостанции надо. Беру данные и посылаю в -куда-то-, а в комп подключаю через USB, а в системе забираю данные с COM-порта.
Если есть что-нибудь подходящее на примете, подскажите пожалуйста.
С Уважением,
0 -
HAKAS
Простые ЛБП с электронным управлением и возможностью подключения к компу (и управлять с него же) далеко не каждый купит.
А делать универсальную приблуду ко всем БП - затем, чтобы всякий кто собрал простой ЛБП мог сделать его более крутым И представляю именно так, как написал.
StrDm
Одно дело просто стабилизированный, другое дело высокостабилизированный типа ТЕС. Все равно не думаю, что ШИМ внесет настолько страшные помехи, что ЛБП будет невозможно юзать.
Да и потом, вопрос примерно в том и состоит - как сделать лучше. Разве ШИМ - единственный вариант?
Под источниками софта подразумеваются программисты которым нечем заняться
0 -
HAKAS
А что за источники такие?
Hambaker
О помехах не подумал. Но с другой стороны не настолько высокостабилизированные ЛБП собирают для дома, чтобы ШИМ вносил какие-либо значительные искажения.
StrDm
Ну во-первых с софтом для компа будет меньше всего проблем ибо есть источники
А во-вторых, просто померить достаточно и показометра на ЛБП. А построить график потребления на протяжении Н-ного времени, простым амперметром\показометром тяжело
0 -
И почему никого не интересует сей девайс? Это ведь простая приставка, которая превратит БП в мощную штуку. Если на атмеге8, то можно с дисплеем сделать. Если на тиньке2313, то без. При копеечной стоимости девайса, мы получим логи потребления энергии устройством, графики, если угодно, тестер аккумуляторов, удаленое управление и прикольные энкодеры вместо резисторов
0 -
Что-то не нашел я там подходящего...
Но вот что подумал: переменный резистор, это же всего лишь резистивный делитель. Следовательно мы можем на порт атмеги повесить транзистор и ШИМом выдавать нужное напряжение. Верно? Или я чего-то не знаю?
В этом случае получается все как-то уж подозрительно элементарно...
UPD: Вот так
0 -
Здравия желаю, уважаемые.
Собственно вопрос в названии темы - есть ли какие-нибудь схемы готовых устройств делающих подобное?
В мечтах имеет место такая задумка: делается плата управления (на тех же атмегах), на вход которой подаем 3 провода резистора регулирующего ток и три провода резистора регулирующего напряжение (ну и разумеется измерение вольт\ампер), а на выходе ПУ имеем два энкодера и USB\COM через который также можно управлять напряжением и током с ПК.
Сия плата должна будет уметь цепляться в любой аналоговый БП с минимальными изменениями.
Ищу именно входную часть - МК с энкодером (или кнопками) вместо резистора. Не подскажите ли чего?
С Уважением,
0 -
Спасибо большое. Косяк в моей невнимательности. Я перепутал предназначение резисторов R18 и R16. Все теперь регулируется нормально от нолика до 3А.
0 -
В обвязке DA1.2 по 15 варианту стоит 1000pF и резистор на 1МОм
без нагрузки
11-12 0,42в
11-13 0в
с нагрузкой
11-12 0,44в
11-13 0,44в
Шунт R20 - С5-16МВ-5ВТ 0,24Ом +-1%
0
Hdd Не Заводится От Левого Питания
в Песочница (Q&A)
Опубликовано
Блок на 50В который - старый (годов 70-80х) ТЕС какой-то. Грехов не замечено за ним. Второй самоделка ПиДБП - тоже вроде достаточно стабилен. У обоих индикаторы В\А есть. Но контролировал на разъеме хдд - нормально. Просадки больше 0.3В замечено небыло. Причем и с преобразователем и от двух бп. Т.е. это вполне может быть погрешность моего тестера.