-
Posts
36 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Luccas Fernando
-
-
Boa noite, colegas
Venho aqui pedir uma ajuda, já que não sei como prosseguir com os cálculos desse circuito comparador com histerese... Coloquei todos os dados na imagem:
Em suma, ele aciona com 15V e desliga com 14.5V.
Não achei nada assim no meu livro, estranhei principalmente pela colocação dos resistores.
Não achei algo com essa configuração na internet também, agradeço se puderem me dar uma orientação de como calcular os resistores.
-
As funções f(a) que estou experimentando são as funções exponencial e logarítmica:
O código é esse:
clear, clc, clf, x = [1:5]; a = 2; for k = 0:4 P1(k+1) = (diff(exp(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k; P2(k+1) = (diff(log(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k; end tab = [x' P1' P2']; figure(1),clf plot(x, P1, 'ro--'); hold on plot(x, P2, 'b*:');
O seguinte erro aparece:
Subscripted assignment dimension mismatch. Error in atv2 (line 8) P1(k+1) = (diff(exp(a), a, k+1) / factorial(k)) * (x(k+1) - a)^k;
Agradeço se puderem me ajudar com o código...
-
5 minutos atrás, Shaman93 disse:
6~7 dígitos de precisão
Por que esse valor? E como isso ocasionou imprecisão no resultado daquele código que postei?
-
#include <stdio.h> #include <stdlib.h> int main() { float f = 1.559f; float g = f * 100.0f; printf("%f %f", f, g); return 0; }
Alguém saberia dizer o motivo de ser este o resultado?
1.559000 155.899994
E não
1.559000 155.900000
Talvez seja a imprecisão na representação do número, mas não sei dizer o real motivo.
-
Estou procurando saber a maior quantidade de dígitos de um número que pode ser atribuído à variáveis dos tipos float, double e long double. Estudei o IEEE754 há um tempo, mas já não me lembro tão bem.
Dando uma olhada por aí, encontrei o seguinte:
Type Name | Bytes | Other Names | Range of Values float | 4 | none | 3.4E +/- 38 (7 digits) double | 8 | none | 1.7E +/- 308 (15 digits) long double | same as double | none | Same as double FLT_MAX 3.402823466e+38F DBL_MAX 1.7976931348623158e+308 LDBL_MAX 1.7976931348623158e+308 FLT_MIN 1.175494351e-38F DBL_MIN 2.2250738585072014e-308 LDBL_MIN 2.2250738585072014e-308
Obrigado pelo esclarecimento.
- 2
-
Como posso verificar se uma variável é unsigned depois de passar o endereço dela pra uma função?
A variável não estaria inicializada nem nada.
Eu achei na internet algo assim:
#define IS_UNSIGNED(type) ((type)~1 > 0)
Mas só serve pra tipos de dado, e não pra variáveis.
- 1
-
3 horas atrás, alexandre.mbm disse:
Aliás, ainda estou meio que viajando neste tópico: como você vai usar?
Acho que é meio irrelevante por hora, mas o intuito é ver quão eficientemente consigo transferir calor da palma da minha mão pra uma superfície com um tubo de calor, e quão eficientemente consigo aproveitar essa energia...
Certamente vocês entendem desse assunto bem mais que eu, contudo, quero apenas experimentar e brincar com isso, ainda tenho que pesquisar sobre materiais de interface térmica, estou pensado em fazer galinstan, e sobre o efeito Peltier.
1 hora atrás, rmlazzari58 disse:Umas ideias aí, quem sabe ajuda?
O pessoal que trabalha com encanamento para gás costuma ter uns retalhos de tubo de cobre jogados por ali, muitas vezes finos como um lápis. Não sei se venderiam em extensão tão pequena quanto a de um lápis, sei lá... uns 15cm, talvez? Essa turma pensa em metros.
Será que sucata, serpentina de alguma máquina (ar condicionado, geladeira, fogão etc.) serviria? Aí talvez dê para encontrar em algum ferro-velho...
Cobre é meio chato de serrar, é muito mole, cremoso, pastoso. Mas com paciência, dá prá fazer.
Ajuda sim
Quando acabar essa quarentena eu vou dar uma volta pela cidade e ver se alguma alma de bom coração tem um cano de cobre, acredito que conseguirei encontrar.
Como sugerido por você e pelos outros colegas, consultarei o pessoal que trabalha com encanamento para gás, ar condicionado, geladeira, etc...
E acho que consigo selar com solda normal mesmo, se eu achatar um pouco o tubinho da pra soldar.
@devair1010 @alexandre.mbm @.if @rmlazzari58 @Sérgio Lembo @Thiago Miotto
Agradeço pela ajuda, pessoal.
Acho que já tenho toda informação que preciso
- 1
-
Em 24/05/2021 às 00:17, alexandre.mbm disse:
Desculpe-me não acrescentar. Gostaria de aprender. Qual é a aplicação?
A ideia é ter em mãos um bom condutor de calor, pra transferir calor da minha mão pra outra superfície.
Em 24/05/2021 às 13:20, rmlazzari58 disse:Se a pressão não for muita, silicone comum aguenta até uns 130°C, silicone para junta de motor, até uns 300°C, e vedam bem.
Posso tentar isso.
Acredito que não vai ter muita pressão.
Em 24/05/2021 às 14:14, Sérgio Lembo disse:Com o vapor não será diferente, se a pressão romper a resistência do invóloco quem estiver por perto vai ficar muito machucado.
Eu pretendo selar logo quando começar a sair vapor, depois disso eu deixo em algum lugar bem longe de mim pra água condensar :)
Em 24/05/2021 às 23:23, Thiago Miotto disse:O autor ainda não falou tamanho de seu experimento.
Perdão pela demora...
Não será nada de grandes proporções, talvez um tubo do tamanho de um lápis.
Em 24/05/2021 às 23:23, Thiago Miotto disse:Caso quiser continuar, recomendo que coloque uma dessas
Eu vi alguns tubos de calor no ML:
No entanto, acho que é um preço um tanto quanto salgado pra um tubo de cobre com água...
- 1
-
Estou pensando em fazer um tubo de calor para um pequeno projeto, alguém saberia uma "receita"?
O intuito é fazer um tubo de cobre com água a baixa pressão, minhas dúvidas são:
Onde posso conseguir algum tubo de cobre?Qual a proporção de água que devo colocar?
Como posso selar o tubo?
Minha ideia seria colocar água no tubo, aquecê-lo no fogão e selá-lo quando vapor começar a sair. Talvez eu poderia selar com um pedaço de placa de fenolite e um pouco de solda, mas talvez no processo de aquecimento a solda derreta.
-
17 horas atrás, aphawk disse:
1 - Para que haja regulação, o Zener precisa de uma corrente mínima.
Sim, e a corrente nele não pode exceder a máxima. Segundo o datasheet:
iz_max = 178mAiz_min = 0A (limiar da condução) ou iz_max * 10% = 17.8mA
17 horas atrás, aphawk disse:2 - A sua carga possui uma corrente máxima de 1.1A, e para que o Zener consiga regular, ele precisa de pelo menos uns 5 mA ( VIDA REAL...) , portanto a corrente máxima que vai passar por RD será de 1.105 A.
Isso não seria a corrente mínima em Rd?
Em 15/05/2021 às 11:02, Luccas Fernando disse:⇒ iRd_min = iz_min + iRL_max (eq. 1)
⇒ iRd_max = iz_max + iRL_min (eq. 2)
iRd_min = 17.8mA + 1.1A = 1.1178A
iRd_max = 178mA + 1A = 1.1780A
A corrente máxima em Rd seria quando a corrente na carga é mínima e a corrente no zener é máxima.
17 horas atrás, aphawk disse:3 - Caso a corrente da carga diminua para 1A, a corrente consumida pelo Zener será de 0.105A, dentro da especificação do mesmo.
Bem, sim.
Dessa forma eu terei iRd_max, contudo, nesse caso, o que você me diz é:
iRd_min = 5mA + 1.1A = 1.105A
iRd_max = 105mA + 1A = 1.105A
Então iRd_min = iRd_max? Não entendi isso...
17 horas atrás, aphawk disse:Assim, de grosso modo, a corrente a ser utilizada em seu cálculo será de 1,105A.
Se as correntes mínima e máxima resultantes dos cálculos tiverem um mesmo valor, então sim, pois o valor é único, mas não é meu caso... Há uma pequena diferença.
Eu imagino que devo me manter distante dos extremos, talvez calcular uma média entre iRd_min e iRd_max, mas não sei justificar isso, não tenho certeza do que fazer.
-
Olá.
O circuito é esse (será apenas simulado, desconsiderem problemas da vida real)
A tensão no secundário do transformador é 12VCA, a tensão nominal Zener é 5.1V, pretendo obter 5V na saída e 1A.
Eu pretendo encontrar a capacitância da seguinte forma:
Bem, em um retificador em ponte com filtro sem regulador, a corrente i é a corrente na carga, mas como eu adicionei um regulador com Zener, nesse caso i seria a corrente que passa em Rd e que se divide entre o Zener e RL (pelo menos acho que é isso, me corrijam se eu estiver errado).
Eu sei o seguinte:
iz = iRd - iRL⇒ iRd = iz + iRL
⇒ iRd_min = iz_min + iRL_max (eq. 1)
⇒ iRd_max = iz_max + iRL_min (eq. 2)
Beleza, Eu também sei que iz_max = 178mA segundo o datasheet, iz_min = 0A, iRL_min = 1A e iRL_max = 1.1A, então eu posso usar tanto a eq.1 quanto a eq.2, mas qual eu uso? E por que?
Agradeço pela atenção.
-
Estou precisando criar uma biblioteca, mas não sei o que coloco no arquivo .h e no .c, alguém saberia me dizer?
Só sei que o protótipo das funções se coloca no .h e o corpo delas no .c, não sei o motivo, mas pelo o que vejo por aí é isso.
Daí me resta saber onde coloco as struct's, typedef's, #define's, #include's, const's.
Agradeço pela atenção.
-
Em 18/04/2021 às 23:53, arfneto disse:
Teste o valor de errno e pode ter alguma informação adicional
Como faço isso?
Em 18/04/2021 às 23:53, arfneto disse:ungetc() em stdin é algo esquisito
Por que?
-
16 minutos atrás, arfneto disse:
Errado. Não faria sentido. Não vai esperar por nada. Vai ler o que tem pra ler e retornar instantaneamente.
Eu não sei desligar o line input, mas achei por aí um programa que aparentemente faz isso, e o que ocorre é que o programa pausa porque o buffer está vazio:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { HANDLE _handle = GetStdHandle(STD_INPUT_HANDLE); DWORD _mode; GetConsoleMode(_handle, &_mode); SetConsoleMode(_handle, _mode & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)); // o programa para aqui porque o buffer esta vazio fgetc(stdin); SetConsoleMode(_handle, _mode); return 0; }
Daí se aperto alguma tecla:
-
10 horas atrás, arfneto disse:
Entenda que você sempre pode desligar o LINE INPUT no Windows e o Cooked Mode no Linux.
Mas daí ele só não vai esperar por um Enter, certo? Se o buffer estiver vazio, ainda vai pausar o programa aguardando por uma tecla.
10 horas atrás, arfneto disse:Em Windows,
BOOL WINAPI FlushConsoleInputBuffer( _In_ HANDLE hConsoleInput );
Eu fiz o seguinte, só pra testar:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { int _int; char _char; scanf("%d", &_int); FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); scanf("%c", &_char); printf("\nint = (%d)\nchar = (%c)\n", _int, _char); return 0; }
Mas o '\n' não foi descartado...
Sei que não deveria estar usando nesse contexto, mas acho que deveria funcionar. Estou fazendo alguma coisa errada?
10 horas atrás, arfneto disse:E outra opção é usar, como eu já te mostrei, WaitForSingleObject(). Aqueles 4 programas de menu que eu te mostrei, em C e C++, fazem esse controle.
Acho que só criei 3 postagens aqui no fórum de C/C#/C++, não achei onde comenta sobre isso.
-
Não sei o motivo da função possivelmente falhar, então não sei qual retorno a função deveria ter mesmo no caso do programa do primeiro post: 32 ou -1.
O que tinha sobrado da leitura eram os caracteres 'f' e '\n'...
-
28 minutos atrás, arfneto disse:
Não, não creio haver uma forma de prever o indefinido pois definido estaria.
No caso eu me referia a prever se fflush(stdin) funcionaria ou geraria UB.
Como você disse:
28 minutos atrás, arfneto disse:Se for implementado na entrada faz isso por exclusão. É o caso dos compiladores da Microsoft. Se não for, como está na documentação, UB.
Nos compiladores da Microsoft então, caso implementado na entrada, exclui o que tiver lá, torna vazio, independentemente se já estava. Seria isso?
28 minutos atrás, arfneto disse:Entenda que descarregar (flush) não é apagar (erase, delete).
Deixa ver se entendi: como o termo não é apagar, então não deveria ser implementado na entrada, certo? Já que você disse que quando implementado na entrada, o buffer é descarregado por exclusão do que tem lá, e esse não seria o propósito de fflush.
28 minutos atrás, arfneto disse:O flush só faz isso. Não vê se está vazio. Apenas torna vazio processando tudo que está pendente.
Há como implementar uma função que faça isso? Que funcione para a stdin?
As que eu vi pausam o programa quando o buffer está vazio, e servem apenas para consumir os dados que restaram de uma leitura, algo como:
int c; while((c = fgetc(stdin)) != '\n' && c != EOF);
-
@devair1010 ungetc só precisa do cabeçalho stdio.h, penso que deveria funcionar em qualquer lugar.
Na documentação diz:
If the operation fails, EOF is returned.
Mas não entendi o motivo de ungetc falhar naquele caso.
3 minutos atrás, devair1010 disse:e aqui não aparece a imagem nesse link , seria melhor se você postar a imagem mesmo .
Eu postei imagens mesmo, mas pra resumir no compilador online o retorno é 32 (caractere espaço) e no codeblocks é -1 (EOF).
-
Na documentação da scanf está escrito:
int scanf ( const char * format, ... );
Read formatted data from stdin
Reads data from stdin and stores them according to the parameter format into the locations pointed by the additional arguments.
The additional arguments should point to already allocated objects of the type specified by their corresponding format specifier within the format string.O que são dados formatados?
Eu tinha lido nesse link o seguinte:
printf() and scanf() are examples for formatted input and output functions and getch(), getche(), getchar(), gets(), puts(), putchar() etc. are examples of unformatted input output functions.
Não entendi muito bem o motivo, e não encontrei muito a respeito.
Gostaria de saber o que são dados formatados e não-formatados, e exemplos também se possível.
Grato.
-
Em 22/03/2021 às 18:57, kgin disse:
todas as outras funções como _flushall e _fflush_nolock são funções do windows, fugindo do padrão do C, isso que dizer que não são portáveis.
Na documentação diz que o requisito de ambas é o cabeçalho stdio.h. São portáveis.
Em 22/03/2021 às 19:50, arfneto disse:Pode funcionar na entrada para alguns compiladores mas pela documentação oficial isso gera comportamento indefinido
O que é exatamente um "comportamento indefinido"? Ou de fato não há nada que descreva o comportamento indefinido de fflush(stdin)?
Em 22/03/2021 às 19:50, arfneto disse:Se o argumento for NULL fflush() limpa os buffers de todos os fluxos abertos. TODOS.
Mas então pode gerar comportamento indefinido, certo? Já que stdin está incluída nesse "todos".
Em 22/03/2021 às 19:50, arfneto disse:Não se trata de somente stdout.
Somente fluxos de saída então?
Em 22/03/2021 às 19:50, arfneto disse:e por isso se acaso funcione na entrada em alguma implementação, como a stdio da Microsoft, acaba apagando tudo como se algo tivesse lido tudo o que tinha no buffer, por simples analogia
E se não "funcionar"? Vai gerar comportamento indefinido?
Tem alguma forma de prever o que vai acontecer?
Em 22/03/2021 às 19:50, arfneto disse:acaba apagando tudo como se algo tivesse lido tudo o que tinha no buffer, por simples analogia
Isso seria descarregar o buffer?
Descarregar seria retirar a carga... Caso funcione para a stdin, retirar algo que tenha restado de, por exemplo, uma leitura, não seria apagar?
Mais uma pergunta: como fflush se comporta quando o buffer está vazio?
Por exemplo, caso funcione para a stdin, e o buffer esteja vazio, segundo sua analogia, a função teria que esperar algo para ler da stdin, certo? Consequentemente, o programa iria pausar, mas isso não acontece...
-
Olá.
Fiz o seguinte código:
#include <stdio.h> #include <stdlib.h> int main() { char str1[101]; int x; printf("Digite uma string:\n"); scanf("%100[\nabcde]", str1); x = ungetc(' ', stdin); printf("ungetc retornou <%d>\n\n", x); return 0; }
Testei em um compilador online e o retorno de ungetc foi esse:
Mas no codeblocks aparece -1, acredito que seja EOF:
Alguém saberia o motivo?
Meu compilador é o GNU GCC Compiler.
Grato.
-
Errei uma coisa... Perdão.
Ta... Esse seria o circuito.
1 hora atrás, Thiago Miotto disse:Como você ligará e desligará o relé?
Então, considerei Vz = 200Vrms pra ter uma margem de erro, que é um pouco menor que 10%.
Coloquei o capacitor lá pro relé não ficar armando e desarmando sem parar, e então caso Vin > Vz, o switch do relé muda de posição para onde saem 220Vrms, caso contrário, permaneceria na posição onde saem 110Vrms.
2 minutos atrás, Renato.88 disse:O relé também, terá que ter uma bobina de 110 ou 220V.
Não teria que ter uma bobina de Vin - Vz ≥ 20Vrms?, já que o zener lá está em série.
3 minutos atrás, Renato.88 disse:O capacitor ali realmente é necessário pois um relé de CC vai vibrar mesmo, mas perceba que a tensão de trabalho é de no mínimo 350V.
Qual um bom valor para o capacitor? Ou como calcular?
Eu o coloquei na posição certa ali né? Antes do zener.
-
@Renato.88 Fiz o seguinte, poderia dar uma olhada por favor?
Nunca mexi com relés antes, e estava aprendendo sobre zener não faz muito tempo, então não espere muito de mim
Coloquei aquele capacitor meio que instintivamente, se não tivesse um lá, o relé iria ficar armando e desarmando.
Saberia me explicar também a necessidade de um diodo entre os terminais da bobina do relé?
-
@Renato.88 Olá novamente
Se eu fizer, por exemplo:
seria melhor que:
Sendo que a ideia é ter 5V na saída? Se sim, qual diodo que eu usaria pra ter um Vd mais próximo de 0.7V?
Outra pergunta: há alguma forma de usar zener para avaliar se na entrada, que é conectada na rede elétrica, eu tenho 110 ou 220V? No caso a ideia seria retificar antes e usar o zener para acionar um relé (será feito num simulador).
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Esperava encontrar ENTAO BubbleSort
em Programação - iniciantes
Postado
Olá.
O VisualG parece ter uma grande dificuldade de interpretar condicionais ao ponto que 99% dos problemas com Portugol é esse tal "Esperava encontrar ENTAO"
Sinceramente não sei o que poderia estar errado nesse pseudocódigo de bubblesort...
Ele acusa um problema justamente nessa linha:
Esse pseudocódigo tirei daqui:
Inclusive ele só aceita mais de uma operação condicional em um SE caso elas estejam entre parênteses, fiquei uns 20 minutos quebrando a cabeça por isso já que o erro em si não é indicado pelo VisualG, uma palhaçada esse interpretador