-
Сообщения
-
By FonSchtirlitz · Posted
Добротности и резонанки не одно и тоже. Аккуратнее с формулировками. Слово не воробей, вылетит- не поймаешь. -
Да конечно, вот фото. Картинка смещена вправо, слева полоса затемнением картинки, и с лева же по-моему просматривается часть правой картинки ко всему идёт фантомное изображение на основной картинке.
-
Лампы (17-16) после 1990г, практически, не встречаются. Т.е, сняты с производства. С тех пор прошло 30 лет. Задаю элементарный вопрос: - Как в думаете, всё это время они лежали и ждали, пока (как ждет юная курсистка принца на белом коне) их разберут джентльмены с этого форума? Давайте не будем пудрить носик индексами и золоченными сетками. Лампы с индексом -В(6Н16Б-В и подобное) -это военная приемка, использовалась в аппаратуре 60-70хх годов, и, изредка в гражданской продукции. Всё это давно списано в утиль - у вояк строгие сроки использования и хранения комплектующих, после чего списывается с заменой свежими, благодаря чему те, кто сидел на этом, имел таки неплохой гешефт. А уж после социализма это было растащено-перепродано по кладовкам коммерсантов. И за много лет, наверняка, перемеряно-переотобрано. Впрочем, можно нарваться на ровную лампу -единственно купленная вначале 17-я почти идеальная(повезло!) , но, реально, ИМХО, - одна из десятка или больше, в этом варианте схемы. И, кстати, лампы с "золотыми" сетками в измерении параметров не показали достойных результатов .
-
Можно теперь переделать коммутацию. Схему нарисовать легче, а переключатель воткнуть, если мало места в корпусе - другое дело. Вам-то легко в симуляторе играться, а паять, наверно, уже забыли как. Ну, и что хорошего? На транзисторах лишь 1 Аmax?
-
Ну давайте разбираться, укажите на схеме обозначения выводов транзисторов, также дорисуйте подключенную катушку, а мы посмотрим, а то может проверяете без катушки или обозначения выводов по своему трактуете.
-
-
Similar Content
-
By yakutyonok7
Нужен аналог индикатора ИЖЦ4-14/7 и АЦП КР572ПВ13. Кто-нибудь может подсказать? Нужно для курсового проекта
-
By Ivarrr
Помогите понять где ошибка... не получается реализовать попеременный опрос 2ух каналов АЦП. Данные с одного канала должны передаваться на первый индикатор как напряжение, а со второго, соответственно на второй индикатор как сила тока.
#define F_CPU 8000000U
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
#define INDICATOR PORTD
#define RANK PORTB
unsigned int UR1=0, UR2=0, UR3=0, UR4=0; //переменные для деления на разряды значения напряжения
unsigned int IR1=0, IR2=0, IR3=0, IR4=0; //переменные для деления на разряды значения силы тока
int GainControl=1;
int current_ch=0;
float I, U;
unsigned char voltage, current;
unsigned int NUMS [10] = {0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000}; // от 0 до 9
int main(void)
{
DDRB=0xFF; PORTB=0x00; //ножки порта B для разряда
DDRC=0x00; PORTC=0x00; //ножки порта C для АЦП
DDRD=0xFF; PORTD=0xFF; //ножки порта D для индикаторов
TCCR0 |= (1<<CS01); TCCR0 &= ~((1<<CS00) | (1<<CS02)); //настройка частоты таймера f/8
TIMSK |= (1<<TOIE0); //разрешение прерываний по переполнению таймера
TCNT0=0; // обнуление счетчика
ADCSRA |= ((1<<ADEN) | (1<<ADSC) | (1<<ADPS2)); // запуск АЦП, запуск преобразования, предделитель 16
ADCSRA &= ~((1<<ADFR) | (1<<ADIF) | (1<<ADPS1) | (1<<ADPS0)); // режим преобразвания прерывестый, флаг перобразования опущен, предделитель 16
ADMUX |= ((1<<REFS0) | (1<<REFS1)); //источник опорного напряжения 2.56В
ADMUX &= ~((1<<ADLAR) | (1<<MUX0) | (1<<MUX1) | (1<< MUX2) | (1<<MUX3)); // направление записи, измерительная ножка ADC0;
sei(); // вкл прерывания
while (1)
{
if (ADCSRA & (1<<ADIF))
{
U_Convert((U*5.00/1024)*100);
I_convert((I*5.00/1024)*100);
}
}
}
void U_Convert (unsigned int U_num) //деление на разряды напряжения
{
UR1=U_num/100;
UR2=U_num%100/10;
UR3=U_num%10;
}
void I_convert (unsigned int I_num) //деление на разряды тока
{ IR1=I_num/100;
IR2=I_num%100/10;
IR3=I_num%10;
}
ISR (TIMER0_OVF_vect)
{
if (GainControl == 1) {INDICATOR = 0b11111110; RANK = NUMS[UR1];} //отображение 1ого разряда напряжения
if (GainControl == 2) {INDICATOR = 0b11111101; RANK = NUMS[UR2];} //отображение 2ого разряда напряжения
if (GainControl == 3) {INDICATOR = 0b11111011; RANK = NUMS[UR3];} //отображение 3ого разряда напряжения
if (GainControl == 4) {INDICATOR = 0b11110111; RANK = NUMS[IR1];} //отображение 1ого разряды силы тока
if (GainControl == 5) {INDICATOR = 0b11101111; RANK = NUMS[IR2];} //отображение 2ого разряды силы тока
if (GainControl == 6) {INDICATOR = 0b11011111; RANK = NUMS[IR3];} //отображение 3ого разряды силы тока
GainControl++;
if (GainControl > 6) GainControl=0; // мониторинг переменной для управления затворами
}
ISR (ADC_vect)
{
if (current_ch == 0)
{
U = ADC;
voltage = (U*2.56/1024)*100;
ADMUX |= (1<<MUX0);
current_ch = 1;
ADCSRA |= (1<<ADSC);
}
else
{
I = ADC;
current = (I*2.56/1024)*100;
ADMUX &= ~(1<<MUX0);
current_ch = 0;
ADCSRA |= (1<<ADSC);
}
}
-
By Александр Шилин
Помогите, пожалуйста, со схемой подключения ПЗС-линейки к микроконтроллеру. Задача заключается в том, чтобы определить координату падения светового пятна, сформированного линзой, в пределах линейки.
Модель линейки TCD132D на 1024 пикселя.
Согласно даташиту необходимо три управляющих частоты - M, CCD, SH, питающее напряжение 12 В и опорное 5 В. Все эти условия были выполнены. Данные считываются.
Выход данных с линейки пока просто выведен на осциллограф (красный канал).
Я плохо понимаю физические основы работы ПЗС-линейки, но ее работа кажется мне очень странной и нелогичной.
1) При равномерной фоновой засветке при считывании получается равномерное низкое напряжение на всех пикселях. (Рисунок 1).
2) При закрытии части линейки чем-либо напряжение на закрытых пикселях возрастает (Рисунок 2).
3) При включении фонарика или лазерной указки все пиксели зашкаливают, определить максимум не удается (Рисунок 3).
Если поместить линейку в темное место и светить очень тусклым лазером, то общий уровень напряжения на пикселях высокий, а в месте попадания света наблюдается едва заметный минимум. Возможно так и должно быть и нужно просто инвертировать и усилить сигнал?
В чем может заключаться проблема? Как грамотно снимать выходной сигнал с линейки и заводить его на АЦП МК?
Даташит приложен снизу.
tcd132d.pdf
-
By NicksonWer
Доброго времени!
Суть дальнейшего моего повествования связана с наводками на прототипе фотометрического оборудования. Вот фото данного прототипа:
Если опусти работу таких узлов как управление насосами накачки жидкости, насос откачки жидкости, управление воздушным компрессором, то суть устройства сводится к аналоговой части: ацп микроконтроллера и схемы усилителя фотодиода. Вот блок-схема и принципиальная схема усилителя фотодиода:
Далее 6 ножка ОУ подаётся на вход ацп микроконтроллера.
Печатные платы сделаны таким образом, что схема ОУ и фотодиод расположены на одной плате, а микроконтроллера на другой – основной плате. Плата фотодиода разведена таким образом, что вход ОУ имеет земляную петлю, нижняя сторона является общей землёй:
В целом, эта плата работает нормально. Я ее проверял питая от аккумулятора и сигнал на выходе хороший и чистый.
Проблема сама вот в чём. Что когда всё собрано во едино, а точнее, прототип запитан от внешнего сетевого адаптера от ноутбука, то сигнал превращается в бороду:
Судя даже по этому показометру, размах равен около 35-40 мв при частоте в 50 Гц. И когда я просто подношу ладонь к плате фотодиода на расстояние в 20-50 мм, то размах увеличивается уже за 100 мв.
Тут нужно пояснить вот какой факт. Сейчас я питаю схему ОУ и фотодиода от отдельного аккумулятора (его видно на фото ниже), Так я думал, что питая от общего источника аналоговую часть и цифровую, даёт такой результат.
Но как показала практика, что питать от аккумулятора, что от общего источника, результат одинаковый.
Как выяснилось, даже если отключить питание от цифровой части (тумблер по положительному полюсу питания), а аналоговая питается от аккумулятора, то на показометре картина остаётся той же, видна та же борода.
Но если выдернуть провод питания от этой конструкции, то результат на показометре следующий:
Размах снизился до менее 10 мв и частота увеличилась примерно до 400 Гц. Вероятно тут уже собственные шумы показометра + незначительные наводки на схеме ОУ. Пока писал этот текст включил приборчик, чтобы посмотреть на его показания с отключённым щупом, вот результат:
Вердикт.
Проблему в том, что устройство питается от сети. Как побороть эту беду?
P.s. Есть еще один интересный момент. Когда я пальцем дотрагиваюсь до полигона, но борода исчезает, как будто я действую как-то своей ёмкостью на схему.
Документ Microsoft Word (2).pdf
-
By artos5
Приветствую всех на этом форуме!
Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 4 аналоговых не дифференциальных сигнала . Схема следующая:
Schematic_Temp_opto_sens_V2_20190817124112.pdf
Картинками с более низким разрешением:
библиотеку за основу взял эту:
https://github.com/nsaspook/nidaq700/blob/master/supermoon/example/ADS1220.c
Путем незначительного допиливания, получилась такая библиотека:
Поправил только эти функции:
void ADS1220SendByte(unsigned char Byte) { unsigned char Result = 0x01, i=0, flg=0; MOSI_LO; Delay_us(1); for(i=0;i<8;i++) { SCK_LO; //ADC_CLK=0 Delay_us(4); if (flg) MOSI_LO; Delay_us(1); SCK_HI; //ADC_CLK=1 Delay_us(1); if (Byte&Result){ MOSI_HI; flg=1; } else MOSI_LO; Delay_us(4); Result<<=1; } SCK_LO; //ADC_CLK=0 } unsigned char ADS1220ReceiveByte(void) { unsigned char Result = 0, i=0; for(i=0;i<8;i++) { Result<<=1; SCK_LO; //ADC_CLK=0 Delay_us(5); //Delay_us(5); SCK_HI; //ADC_CLK=1 Delay_us(3); if (MISO) Result++; Delay_us(2); } SCK_LO; //ADC_CLK=0 return Result; } И добавил эту функцию:
void ADS1220Config_MUX_GAIN(uint8_t mux, uint8_t gain) { unsigned Temp; ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp); // clear prev value; Temp &= 0x0f; Temp |= gain; Temp |= mux; // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp); ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp); // clear prev DataRate code; Temp &= 0x1f; Temp |= (ADS1220_DR_600 + ADS1220_CC); // Set default start mode to 600sps and continuous conversions // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp); } ADS1220.h :
в результате получаю такую осциллограмму :
То есть , постоянно считывается 0.
А вот регистры конфигурации:
Задаю номер входа MUX и усиление :
Читаю данные так:
ADS1220Config_MUX_GAIN(ADS1220_MUX_0_G, ADS1220_GAIN_1); HAL_Delay(10); temp_[0] = ADS1220ReadData(); Это для 0 канала.
Пробовал и так:
ADS1220SetChannel(ADS1220_MUX_0_G); ADS1220SetGain(ADS1220_GAIN_1); temp_[0] = ADS1220ReadData(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
-